fork download
  1. #include<iostream>
  2. #include<stack>
  3.  
  4. using namespace std;
  5.  
  6. typedef struct student{
  7. int parent;
  8. }student;
  9.  
  10. student arr[32002];
  11. stack<int> s;
  12. int visit[32002];
  13.  
  14. int max(int a, int b){
  15. return a>b?a:b;
  16. }
  17.  
  18. void find(int x){
  19. visit[x] = 1;
  20. int a = arr[x].parent;
  21. if(!visit[a])
  22. find(a);
  23. s.push(x);
  24.  
  25. }
  26.  
  27. int main(){
  28. int n,m;
  29. int maxnum=0;
  30. scanf("%d %d",&n,&m);
  31.  
  32.  
  33. for(int i=1;i<=n;i++){
  34. arr[i].parent = i;
  35. }
  36.  
  37. int a, b;
  38. for(int i=0;i<m;i++){
  39. scanf("%d %d",&a,&b);
  40. arr[a].parent = b;
  41. }
  42. for(int i=1;i<=n;i++){
  43. if(!visit[i])
  44. find(i);
  45.  
  46. }
  47.  
  48.  
  49. while(s.size()){
  50. printf("%d",s.top());
  51. s.pop();
  52. if(!s.empty())
  53. printf(" ");
  54. }
  55.  
  56.  
  57. }
Success #stdin #stdout 0s 4384KB
stdin
3 2
2 3
2 1
stdout
3 2 1