fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. #define LEN 128
  6. #define MAX 128
  7.  
  8. int main(void) {
  9. struct {
  10. int upcount;
  11. int downcount;
  12. int up[100];
  13. int down[100];
  14. } alphabet[26];
  15. for(int i=0;i<26;i++)
  16. alphabet[i].upcount=alphabet[i].downcount=0;
  17. char line[LEN];
  18. while(fgets(line,LEN,stdin)!=NULL)
  19. {
  20. int len=strlen(line);
  21. if(line[len-1]=='\n')
  22. line[--len]=0;
  23. char aa, bb;
  24. sscanf(line, "Step %c must be finished before step %c can begin.", &aa, &bb);
  25. int a=aa-'A';
  26. int b=bb-'A';
  27. alphabet[a].down[alphabet[a].downcount++] = b;
  28. alphabet[b].up[alphabet[b].upcount++] = a;
  29. }
  30.  
  31. int top;
  32. for(int i=0;i<26;i++)
  33. if(alphabet[i].upcount==0)
  34. top=i;
  35. int bottom;
  36. for(int i=0;i<26;i++)
  37. if(alphabet[i].downcount==0)
  38. bottom=i;
  39. int available[26];
  40. for(int i=0;i<26;i++)
  41. available[i]=0;
  42.  
  43.  
  44. int solution[100];
  45. int k=0;
  46. int current=top;
  47.  
  48. int flag=0;
  49. while(1)
  50. {
  51. for(int i=0;i<alphabet[current].downcount;i++)
  52. available[alphabet[current].down[i]]=1;
  53.  
  54. for(int i=0;i<26;i++)
  55. {
  56. if(available[i])
  57. {
  58. solution[k++]=i;
  59. current=i;
  60. available[i]=0;
  61. break;
  62. }
  63. else {
  64. flag=1;
  65. }
  66. }
  67. if(flag) break;
  68.  
  69. }
  70.  
  71. solution[k]=0;
  72. for(int i=0;i<k;i++)
  73. printf("%c",solution[i]+'A');
  74. return 0;
  75. }
  76.  
Success #stdin #stdout 0.01s 5292KB
stdin
Step U must be finished before step A can begin.
Step F must be finished before step Z can begin.
Step B must be finished before step J can begin.
Step O must be finished before step R can begin.
Step H must be finished before step S can begin.
Step T must be finished before step R can begin.
Step L must be finished before step W can begin.
Step M must be finished before step I can begin.
Step Q must be finished before step K can begin.
Step Z must be finished before step V can begin.
Step C must be finished before step E can begin.
Step W must be finished before step I can begin.
Step K must be finished before step S can begin.
Step I must be finished before step Y can begin.
Step P must be finished before step V can begin.
Step V must be finished before step X can begin.
Step R must be finished before step E can begin.
Step N must be finished before step E can begin.
Step X must be finished before step J can begin.
Step A must be finished before step J can begin.
Step S must be finished before step G can begin.
Step J must be finished before step E can begin.
Step Y must be finished before step E can begin.
Step D must be finished before step G can begin.
Step E must be finished before step G can begin.
Step K must be finished before step N can begin.
Step B must be finished before step I can begin.
Step X must be finished before step S can begin.
Step V must be finished before step S can begin.
Step U must be finished before step L can begin.
Step N must be finished before step G can begin.
Step O must be finished before step L can begin.
Step X must be finished before step E can begin.
Step V must be finished before step E can begin.
Step Y must be finished before step G can begin.
Step A must be finished before step Y can begin.
Step M must be finished before step E can begin.
Step F must be finished before step Q can begin.
Step F must be finished before step X can begin.
Step L must be finished before step C can begin.
Step T must be finished before step L can begin.
Step B must be finished before step C can begin.
Step Q must be finished before step N can begin.
Step T must be finished before step G can begin.
Step R must be finished before step D can begin.
Step I must be finished before step A can begin.
Step B must be finished before step M can begin.
Step H must be finished before step A can begin.
Step F must be finished before step K can begin.
Step U must be finished before step F can begin.
Step R must be finished before step A can begin.
Step J must be finished before step D can begin.
Step V must be finished before step Y can begin.
Step F must be finished before step J can begin.
Step C must be finished before step K can begin.
Step M must be finished before step C can begin.
Step F must be finished before step E can begin.
Step I must be finished before step E can begin.
Step T must be finished before step A can begin.
Step J must be finished before step Y can begin.
Step R must be finished before step X can begin.
Step W must be finished before step S can begin.
Step V must be finished before step R can begin.
Step U must be finished before step V can begin.
Step C must be finished before step V can begin.
Step F must be finished before step Y can begin.
Step R must be finished before step G can begin.
Step W must be finished before step N can begin.
Step H must be finished before step N can begin.
Step H must be finished before step Y can begin.
Step B must be finished before step W can begin.
Step M must be finished before step Z can begin.
Step X must be finished before step A can begin.
Step A must be finished before step G can begin.
Step N must be finished before step A can begin.
Step H must be finished before step J can begin.
Step B must be finished before step O can begin.
Step W must be finished before step A can begin.
Step P must be finished before step N can begin.
Step Z must be finished before step G can begin.
Step W must be finished before step D can begin.
Step D must be finished before step E can begin.
Step W must be finished before step J can begin.
Step N must be finished before step D can begin.
Step C must be finished before step J can begin.
Step B must be finished before step Y can begin.
Step F must be finished before step P can begin.
Step L must be finished before step P can begin.
Step X must be finished before step G can begin.
Step R must be finished before step Y can begin.
Step K must be finished before step A can begin.
Step M must be finished before step Y can begin.
Step W must be finished before step Y can begin.
Step F must be finished before step I can begin.
Step L must be finished before step X can begin.
Step R must be finished before step J can begin.
Step V must be finished before step J can begin.
Step V must be finished before step D can begin.
Step H must be finished before step C can begin.
Step O must be finished before step G can begin.
Step P must be finished before step R can begin.
stdout
AF