Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.94 KB | None | 0 0
  1. #include<iostream>
  2. #include<vector>
  3. #include<queue>
  4. using namespace std;
  5. vector<int>graph[10];
  6. int t;
  7. int discover[10];
  8. int finish[10];
  9. int color[10];
  10. int prev[10];
  11. void dfs_visit(int u);
  12. void dfs(int node)
  13. {
  14. for(int u=0;u<node;u++)
  15. {
  16. if(color[u]==0)
  17. dfs_visit(u);
  18. }
  19. }
  20. void dfs_visit(int u)
  21. { color[u]=1;
  22. t=t+1;
  23. discover[u]=t;
  24. for(int i=0;i<graph[u].size();i++)
  25. {
  26. if(color[graph[u][i]]==0)
  27. prev[graph[u][i]]=u;
  28. dfs_visit(graph[u][i]);
  29. }
  30. t=t+1;
  31. finish[u]=t;
  32. color[u]=2;
  33. }
  34.  
  35. int main()
  36. {
  37. int node,edge;
  38. cin>>node>>edge;
  39. for(int i=0;i<edge;i++)
  40. {
  41. int x,y;
  42. cin>>x>>y;
  43. graph[x].push_back(y);
  44. }
  45. //now calling dfs
  46. dfs(node);
  47. for(int i=0;i<node;i++)
  48. {
  49. cout<<"Discover t of "<<i<<" "<<discover[i]<<" & finish t "<<finish[i]<<"."<<endl;
  50. }
  51. return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement