Create a program to represent a graph using an adjacency Matrix and perform Depth-First Search (DFS) to systematically visit all vertices.
CODE:
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
class Graph {
private:
int numVertices;
vector<vector<int>> adjacencyMatrix;
public:
Graph(int n) : numVertices(n) {
adjacencyMatrix.resize(numVertices, vector<int>(numVertices, 0));
}
void addEdge(int u, int v) {
adjacencyMatrix[u][v] = 1;
adjacencyMatrix[v][u] = 1; // Assuming undirected graph
}
void DFS(int startVertex) {
vector<bool> visited(numVertices, false);
stack<int> stack;
visited[startVertex] = true;
stack.push(startVertex);
cout << "Depth First Search starting from vertex " << startVertex << ": ";
while (!stack.empty()) {
int currentVertex = stack.top();
stack.pop();
cout << currentVertex << " ";
for (int i = 0; i < numVertices; ++i) {
if (adjacencyMatrix[currentVertex][i] && !visited[i]) {
visited[i] = true;
stack.push(i);
}
}
}
cout << endl;
}
};
int main() {
Graph g(6); // Change the value to the number of vertices in your graph
g.addEdge(0, 1);
g.addEdge(0, 2);
g.addEdge(1, 3);
g.addEdge(1, 4);
g.addEdge(2, 4);
g.addEdge(3, 5);
g.addEdge(4, 5);
g.DFS(0);
return 0;
}