Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Vertex {
- public:
- int value;
- vector<int> adj;
- bool isVisited = false;
- Vertex(int _value)
- {
- value = _value;
- }
- void addEdge(int destination)
- {
- adj.push_back(destination);
- }
- };
- class Graph
- {
- public:
- int vertexCount; // No. of vertices
- vector<Vertex> verticies;
- Graph(int _vertexCount)
- {
- this->vertexCount = _vertexCount;
- vector<Vertex> verticies;
- for (size_t i = 0; i < _vertexCount; i++)
- {
- Vertex v = Vertex(i);
- verticies.push_back(v);
- }
- cout << "verticies count " << verticies.size() << endl;
- }
- void addEdge(int fromVertex, int toVertex)
- {
- cout << "verticies count in addEdge: " << verticies.size() << endl;
- verticies[fromVertex].addEdge(toVertex);
- }
- void findPath(int fromVertex, int toVertex, vector<int> pathSoFar)
- {
- pathSoFar.push_back(fromVertex);
- if (fromVertex == toVertex)
- {
- for (int i = 0; i < pathSoFar.size(); i++)
- {
- cout << pathSoFar.at(i) << " ";
- }
- cout << endl;
- return;
- }
- else
- {
- for (size_t i = 0; i < verticies[fromVertex].adj.size(); i++)
- {
- int nextToVisit = verticies[fromVertex].adj.at(i);
- if (verticies[nextToVisit].isVisited == false)
- {
- findPath(nextToVisit, toVertex, pathSoFar);
- }
- }
- }
- }
- };
- int main()
- {
- // Create a graph given in the above diagram
- Graph g(4);
- g.addEdge(0, 1);
- g.addEdge(0, 2);
- g.addEdge(1, 2);
- g.addEdge(2, 0);
- g.addEdge(2, 3);
- g.addEdge(3, 3);
- vector<int> path;
- g.findPath(2, 1, path);
- return 0;
- }
Add Comment
Please, Sign In to add comment