Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.62 KB | None | 0 0
  1. #include<iostream>
  2. #include<vector>
  3. using namespace std;
  4.  
  5.  
  6. class Graph{
  7. private:
  8. int n; //number of vertex in the graph
  9. vector<int>* matrix;
  10. void DFSUtil(int u, bool visited[]);
  11. public:
  12. Graph(int n=10){
  13. this->n = n;
  14. matrix = new vector<int>[n];
  15. for(int i=0; i<n; i++){
  16. matrix[i]= vector<int>();
  17. }
  18. }
  19. void addEdge(int u, int v); // function to add an edge to graph
  20. void displayMatrix();
  21. void DFS(int v);
  22. };
  23.  
  24.  
  25. void Graph::DFSUtil(int u, bool visited[]){
  26. visited[u] = true;
  27. cout << u << " ";
  28. for(int i=0; i<n; i++){
  29. if(!visited[i] && matrix[u][i]!=0)
  30. DFSUtil(i, visited);
  31. }
  32.  
  33.  
  34. }
  35. void Graph::DFS(int v){
  36. bool *visited = new bool[n];
  37. for (int i = 0; i < n; i++)
  38. visited[i] = false;
  39. DFSUtil(v, visited);
  40. }
  41.  
  42.  
  43. void Graph::addEdge(int u, int v) {
  44. matrix[u].push_back(v);
  45. }
  46.  
  47. void Graph::displayMatrix() {
  48. if(n==0) return;
  49. cout<<" ";
  50. for(int i = 0; i < n; i++) cout<<i<<" ";
  51. cout<<endl;
  52. for(int i = 0; i < n; i++) cout<<"---";
  53. cout<<endl;
  54. for(int i = 0; i < n; i++) {
  55. cout<<i<< "|";
  56. for(int j = 0; j < n; j++) {
  57. cout << matrix[i][j] << " ";
  58. }
  59. cout << endl;
  60. }
  61. }
  62.  
  63. int main() {
  64. int n = 4; //there are 6 vertices in the graph
  65. Graph g(n);
  66. g.addEdge(0, 1);
  67. g.addEdge(0, 2);
  68. g.addEdge(1, 1);
  69. g.addEdge(2, 0);
  70. g.addEdge(2, 1);
  71. g.addEdge(2, 3);
  72. g.addEdge(2, 3);
  73. g.addEdge(3, 3);
  74. // g.displayMatrix();
  75. g.DFS(2);
  76.  
  77. return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement