Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- stack <int> stk;
- int vis[5005], cy;
- vector <int> g[5005], order;
- map <pii, int> mp;
- void toposort(int u){
- if(vis[u]) {
- if(vis[u]==1) cy = true;
- return;
- }
- vis[u] = 1;
- for(int i=0;i<g[u].size();i++){
- toposort(g[u][i]);
- }
- stk.push(u);
- vis[u] = 2;
- }
- void inittoposort(int n){
- cy = false;
- memset(vis, false, sizeof vis);
- for(int i=1;i<=n;i++){
- if(!vis[i]){
- toposort(i);
- }
- }
- while(!stk.empty()){
- order.push_back(stk.top());
- //cout << stk.top() << " ";
- stk.pop();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement