fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. vector<int>graph[1001];
  4. int visit[1001];
  5. int n, e;
  6. stack<int>ans;
  7. void dfs(int start)
  8. {
  9. visit[start] = 1;
  10. for(int j = 0; j < graph[start].size();j++)
  11. {
  12. int node = graph[start][j];
  13. if(visit[node] == 0)
  14. {
  15. visit[node] = 1;
  16. dfs(node);
  17. }
  18. }
  19. ans.push(start);
  20. }
  21.  
  22. int main()
  23. {
  24. cin>>n>>e;
  25. int u, v;
  26. for(int i = 1; i <= e; i++)
  27. {
  28. cin>>u>>v;
  29. graph[u].push_back(v);
  30. }
  31. for(int i = 1; i <= n; i++)
  32. {
  33. if(visit[i] == 0)
  34. {
  35. dfs(i);
  36. }
  37. }
  38.  
  39. while(!ans.empty())
  40. {
  41. cout<<ans.top()<<" ";
  42. ans.pop();
  43. }
  44.  
  45. }
  46.  
Success #stdin #stdout 0s 5288KB
stdin
8 8                                                                              1 3                                                                              2 3                                                                              2 4                                                                              3 5                                                                              5 6                                                                              4 6                                                                              5 8                                                                              6 7   
stdout
2 4 1 3 5 8 6 7