Guest User

Untitled

a guest
May 23rd, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. class Vertex {
  2.  
  3. public:
  4. int value;
  5. vector<int> adj;
  6. bool isVisited = false;
  7.  
  8. Vertex(int _value)
  9. {
  10. value = _value;
  11. }
  12.  
  13. void addEdge(int destination)
  14. {
  15. adj.push_back(destination);
  16. }
  17. };
  18.  
  19. class Graph
  20. {
  21.  
  22. public:
  23.  
  24. int vertexCount; // No. of vertices
  25. vector<Vertex> verticies;
  26.  
  27. Graph(int _vertexCount)
  28. {
  29. this->vertexCount = _vertexCount;
  30. vector<Vertex> verticies;
  31. for (size_t i = 0; i < _vertexCount; i++)
  32. {
  33. Vertex v = Vertex(i);
  34. verticies.push_back(v);
  35. }
  36. cout << "verticies count " << verticies.size() << endl;
  37. }
  38. void addEdge(int fromVertex, int toVertex)
  39. {
  40. cout << "verticies count in addEdge: " << verticies.size() << endl;
  41. verticies[fromVertex].addEdge(toVertex);
  42. }
  43. void findPath(int fromVertex, int toVertex, vector<int> pathSoFar)
  44. {
  45. pathSoFar.push_back(fromVertex);
  46. if (fromVertex == toVertex)
  47. {
  48. for (int i = 0; i < pathSoFar.size(); i++)
  49. {
  50. cout << pathSoFar.at(i) << " ";
  51. }
  52. cout << endl;
  53. return;
  54. }
  55. else
  56. {
  57. for (size_t i = 0; i < verticies[fromVertex].adj.size(); i++)
  58. {
  59. int nextToVisit = verticies[fromVertex].adj.at(i);
  60. if (verticies[nextToVisit].isVisited == false)
  61. {
  62. findPath(nextToVisit, toVertex, pathSoFar);
  63. }
  64.  
  65. }
  66. }
  67. }
  68. };
  69.  
  70. int main()
  71. {
  72. // Create a graph given in the above diagram
  73. Graph g(4);
  74. g.addEdge(0, 1);
  75. g.addEdge(0, 2);
  76. g.addEdge(1, 2);
  77. g.addEdge(2, 0);
  78. g.addEdge(2, 3);
  79. g.addEdge(3, 3);
  80.  
  81.  
  82. vector<int> path;
  83. g.findPath(2, 1, path);
  84.  
  85. return 0;
  86. }
Add Comment
Please, Sign In to add comment