fork download
  1. #include<bits/stdc++.h>
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. class graph
  6. {
  7. int V;
  8. list<int> *adj;
  9. void DFS_UTL(int v, bool visited[]);
  10.  
  11. public:
  12. graph(int V);
  13. void add_edge(int v,int w);
  14. void dfs(int v);
  15. };
  16.  
  17. graph :: graph(int V)
  18. {
  19. this->V = V;
  20. adj = new list<int>[V];
  21. }
  22.  
  23. void graph :: add_edge(int v,int w)
  24. {
  25. adj[v].push_back(w);
  26. }
  27.  
  28. void graph :: DFS_UTL(int v,bool visited[])
  29. {
  30. visited[v] = true;
  31. cout<<v<<" ";
  32. list<int> :: iterator i;
  33.  
  34. for(i = adj[v].begin(); i != adj[v].end(); i++)
  35. {
  36. if(!visited[*i])
  37. DFS_UTL(*i,visited);
  38. }
  39. }
  40.  
  41. void graph :: dfs(int v)
  42. {
  43. bool *visited = new bool[V];
  44. int i;
  45. for(i=0;i<V;i++)
  46. visited[i] = false;
  47.  
  48.  
  49. DFS_UTL(v,visited);
  50. }
  51.  
  52. int main() {
  53. graph g(8);
  54.  
  55. g.add_edge(0,1);
  56. g.add_edge(1,5);
  57. g.add_edge(0,3);
  58. g.add_edge(4,2);
  59. g.add_edge(0,4);
  60. g.add_edge(6,7);
  61. g.add_edge(5,6);
  62.  
  63.  
  64. cout<< "Traversal of graph = ";
  65. g.dfs(0);
  66. return 0;
  67. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
Traversal of graph = 0 1 5 6 7 3 4 2