Advertisement
apl-mhd

topologicalSOrt

May 23rd, 2018
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.39 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <vector>
  4. #include <stack>
  5. #include <queue>
  6. using namespace std;
  7. /*
  8. 8 8
  9. 0 1
  10. 1 2
  11. 2 3
  12. 2 4
  13. 4 5
  14. 6 1
  15. 6 7
  16. 7 4
  17.  
  18.  
  19. */
  20.  
  21.  
  22. vector<vector<int>>adj;
  23. int m,n;
  24.  
  25. stack<int>st;
  26.  
  27. int visited[100];
  28.  
  29. void init(){
  30.  
  31.     for(int i =0; i<100; i++){
  32.  
  33.         visited[i]=0;
  34.  
  35.     }
  36. }
  37.  
  38.  
  39. void printGraph(){
  40.  
  41.     for (int j = 0; j <m ; ++j) {
  42.  
  43.         for (int i = 0; i <adj[j].size() ; ++i) {
  44.  
  45.             cout<<j<<" "<<adj[j][i]<<endl;
  46.         }
  47.     }
  48.  
  49. }
  50.  
  51. void dfs(int s){
  52.  
  53.     visited[s]=1;
  54.  
  55.     if(adj[s].size()==0){
  56.  
  57.         st.push(s);
  58.          //cout<<s<<" ";
  59.         return;
  60.         }
  61.  
  62.     for(int i=0; i<adj[s].size(); i++){
  63.  
  64.         if(visited[adj[s][i]] == 0) {
  65.             dfs(adj[s][i]);
  66.             visited[adj[s][i]] = 1;
  67.         }
  68.     }
  69.  
  70.     //cout<<s<<" ";
  71.     st.push(s);
  72.  
  73.  
  74. }
  75.  
  76. int main() {
  77.  
  78.     adj.resize(10);
  79.  
  80.     freopen("graph.txt","r",stdin);
  81.  
  82.     cin>>n>>m;
  83.  
  84.     cout<<n<<m<<endl;
  85.  
  86.     int u,v;
  87.  
  88.     for (int i = 0; i <m ; ++i) {
  89.  
  90.         cin>>u>>v;
  91.  
  92.         adj[u].push_back(v);
  93.  
  94.        // cout<<u<<" "<<v<<endl;
  95.  
  96.     }
  97.  
  98.  
  99.     printGraph();
  100.  
  101.     init();
  102.  
  103.  
  104.     for (int j = 0; j <n ; ++j) {
  105.  
  106.         if(visited[j] == 0)
  107.             dfs(j);
  108.     }
  109.  
  110.  
  111.  
  112.     while(!st.empty()){
  113.  
  114.         cout<<st.top()<<" ";
  115.         st.pop();
  116.     }
  117.  
  118.     cout<<endl;
  119.  
  120.  
  121.  
  122.     return 0;
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement