Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<vector>
- #include<queue>
- using namespace std;
- vector<int>graph[10];
- int t;
- int discover[10];
- int finish[10];
- int color[10];
- int prev[10];
- void dfs_visit(int u);
- void dfs(int node)
- {
- for(int u=0;u<node;u++)
- {
- if(color[u]==0)
- dfs_visit(u);
- }
- }
- void dfs_visit(int u)
- { color[u]=1;
- t=t+1;
- discover[u]=t;
- for(int i=0;i<graph[u].size();i++)
- {
- if(color[graph[u][i]]==0)
- prev[graph[u][i]]=u;
- dfs_visit(graph[u][i]);
- }
- t=t+1;
- finish[u]=t;
- color[u]=2;
- }
- int main()
- {
- int node,edge;
- cin>>node>>edge;
- for(int i=0;i<edge;i++)
- {
- int x,y;
- cin>>x>>y;
- graph[x].push_back(y);
- }
- //now calling dfs
- dfs(node);
- for(int i=0;i<node;i++)
- {
- cout<<"Discover t of "<<i<<" "<<discover[i]<<" & finish t "<<finish[i]<<"."<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement