#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define LEN 128
#define MAX 128
#define MAXLETTER 6
int main( void ) {
struct {
int upcount;
int downcount;
int up[ 100 ] ;
int down[ 100 ] ;
} alphabet[ MAXLETTER] ;
for ( int i= 0 ; i< MAXLETTER; i++ )
alphabet[ i] .upcount = alphabet[ i] .downcount = 0 ;
char line[ LEN] ;
while ( fgets ( line
, LEN
, stdin
) != NULL
) {
if ( line[ len- 1 ] == '\n ' )
line[ -- len] = 0 ;
char aa, bb;
sscanf ( line
, "Step %c must be finished before step %c can begin." , & aa
, & bb
) ; int a= aa- 'A' ;
int b= bb- 'A' ;
alphabet[ a] .down [ alphabet[ a] .downcount ++ ] = b;
alphabet[ b] .up [ alphabet[ b] .upcount ++ ] = a;
}
int top;
for ( int i= 0 ; i< MAXLETTER; i++ )
if ( alphabet[ i] .upcount == 0 )
top= i;
int bottom;
for ( int i= 0 ; i< MAXLETTER; i++ )
if ( alphabet[ i] .downcount == 0 )
bottom= i;
int available[ MAXLETTER] ;
for ( int i= 0 ; i< MAXLETTER; i++ )
available[ i] = 0 ;
int solution[ 100 ] ;
int k= 0 ;
int current= top;
int flag= 0 ;
while ( 1 )
{
for ( int i= 0 ; i< alphabet[ current] .downcount ; i++ )
available[ alphabet[ current] .down [ i] ] = 1 ;
for ( int i= 0 ; i< MAXLETTER; i++ )
{
if ( available[ i] )
{
solution[ k++ ] = i;
current= i;
available[ i] = 0 ;
break ;
}
}
}
solution[ k] = 0 ;
for ( int i= 0 ; i< k; i++ )
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKI2RlZmluZSBMRU4gMTI4CiNkZWZpbmUgTUFYIDEyOAojZGVmaW5lIE1BWExFVFRFUiA2CgppbnQgbWFpbih2b2lkKSB7CglzdHJ1Y3QgewoJCWludCB1cGNvdW50OwoJCWludCBkb3duY291bnQ7CgkJaW50IHVwWzEwMF07CgkJaW50IGRvd25bMTAwXTsKCX0gYWxwaGFiZXRbTUFYTEVUVEVSXTsKCWZvcihpbnQgaT0wO2k8TUFYTEVUVEVSO2krKykKCQlhbHBoYWJldFtpXS51cGNvdW50PWFscGhhYmV0W2ldLmRvd25jb3VudD0wOwoJY2hhciBsaW5lW0xFTl07Cgl3aGlsZShmZ2V0cyhsaW5lLExFTixzdGRpbikhPU5VTEwpCgl7CgkJaW50IGxlbj1zdHJsZW4obGluZSk7CgkJaWYobGluZVtsZW4tMV09PSdcbicpCgkJCWxpbmVbLS1sZW5dPTA7CgkJY2hhciBhYSwgYmI7CgkJc3NjYW5mKGxpbmUsICJTdGVwICVjIG11c3QgYmUgZmluaXNoZWQgYmVmb3JlIHN0ZXAgJWMgY2FuIGJlZ2luLiIsICZhYSwgJmJiKTsKCQlpbnQgYT1hYS0nQSc7CgkJaW50IGI9YmItJ0EnOwoJCgkJYWxwaGFiZXRbYV0uZG93blthbHBoYWJldFthXS5kb3duY291bnQrK10gPSBiOwoJCWFscGhhYmV0W2JdLnVwW2FscGhhYmV0W2JdLnVwY291bnQrK10gPSBhOwoJfQoJCglpbnQgdG9wOwoJZm9yKGludCBpPTA7aTxNQVhMRVRURVI7aSsrKQoJCWlmKGFscGhhYmV0W2ldLnVwY291bnQ9PTApCgkJCXRvcD1pOwoJcHJpbnRmKCIlZFxuIix0b3ApOwoJaW50IGJvdHRvbTsKCWZvcihpbnQgaT0wO2k8TUFYTEVUVEVSO2krKykKCQlpZihhbHBoYWJldFtpXS5kb3duY291bnQ9PTApCgkJCWJvdHRvbT1pOwkKCWludCBhdmFpbGFibGVbTUFYTEVUVEVSXTsKCWZvcihpbnQgaT0wO2k8TUFYTEVUVEVSO2krKykKCQlhdmFpbGFibGVbaV09MDsKCmV4aXQoMCk7CgoJaW50IHNvbHV0aW9uWzEwMF07CglpbnQgaz0wOwoJaW50IGN1cnJlbnQ9dG9wOwoKCWludCBmbGFnPTA7Cgl3aGlsZSgxKQoJewoJCWZvcihpbnQgaT0wO2k8YWxwaGFiZXRbY3VycmVudF0uZG93bmNvdW50O2krKykKCQkJYXZhaWxhYmxlW2FscGhhYmV0W2N1cnJlbnRdLmRvd25baV1dPTE7CgoJCWZvcihpbnQgaT0wO2k8TUFYTEVUVEVSO2krKykKCQl7CgkJCWlmKGF2YWlsYWJsZVtpXSkKCQkJewoJCQkJc29sdXRpb25baysrXT1pOwoJCQkJY3VycmVudD1pOwoJCQkJYXZhaWxhYmxlW2ldPTA7CgkJCQlicmVhazsKCQkJfQoJCX0KCQkKCgl9CgkKCXNvbHV0aW9uW2tdPTA7Cglmb3IoaW50IGk9MDtpPGs7aSsrKQoJCXByaW50ZigiJWMiLHNvbHV0aW9uW2ldKydBJyk7CglyZXR1cm4gMDsKfQo=
stdin
U3RlcCBDIG11c3QgYmUgZmluaXNoZWQgYmVmb3JlIHN0ZXAgQSBjYW4gYmVnaW4uClN0ZXAgQyBtdXN0IGJlIGZpbmlzaGVkIGJlZm9yZSBzdGVwIEYgY2FuIGJlZ2luLgpTdGVwIEEgbXVzdCBiZSBmaW5pc2hlZCBiZWZvcmUgc3RlcCBCIGNhbiBiZWdpbi4KU3RlcCBBIG11c3QgYmUgZmluaXNoZWQgYmVmb3JlIHN0ZXAgRCBjYW4gYmVnaW4uClN0ZXAgQiBtdXN0IGJlIGZpbmlzaGVkIGJlZm9yZSBzdGVwIEUgY2FuIGJlZ2luLgpTdGVwIEQgbXVzdCBiZSBmaW5pc2hlZCBiZWZvcmUgc3RlcCBFIGNhbiBiZWdpbi4KU3RlcCBGIG11c3QgYmUgZmluaXNoZWQgYmVmb3JlIHN0ZXAgRSBjYW4gYmVnaW4u
Step C must be finished before step A can begin.
Step C must be finished before step F can begin.
Step A must be finished before step B can begin.
Step A must be finished before step D can begin.
Step B must be finished before step E can begin.
Step D must be finished before step E can begin.
Step F must be finished before step E can begin.