Advertisement
Jasir

Topological Sort

Sep 11th, 2019
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.61 KB | None | 0 0
  1. stack <int> stk;
  2. int vis[5005], cy;
  3. vector <int> g[5005], order;
  4. map <pii, int> mp;
  5.  
  6.  
  7. void toposort(int u){
  8.     if(vis[u]) {
  9.         if(vis[u]==1) cy = true;
  10.         return;
  11.     }
  12.     vis[u] = 1;
  13.     for(int i=0;i<g[u].size();i++){
  14.         toposort(g[u][i]);
  15.     }
  16.     stk.push(u);
  17.     vis[u] = 2;
  18. }
  19.  
  20. void inittoposort(int n){
  21.     cy = false;
  22.     memset(vis, false, sizeof vis);
  23.     for(int i=1;i<=n;i++){
  24.         if(!vis[i]){
  25.             toposort(i);
  26.         }
  27.     }
  28.     while(!stk.empty()){
  29.         order.push_back(stk.top());
  30.         //cout << stk.top() << " ";
  31.         stk.pop();
  32.     }
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement