FULL DFS IN GRAPH
Sat Nov 23 2024 06:41:41 GMT+0000 (Coordinated Universal Time)
Saved by
@E23CSEU1151
#include <iostream>
#include <vector>
using namespace std;
// Recursive function to perform DFS
void dfs(int currentNode, const vector<vector<int>>& adjList, vector<bool>& visited) {
// Mark the current node as visited
visited[currentNode] = true;
// Process the current node (here, we simply print it)
cout << currentNode << " ";
// Visit all unvisited neighbors of the current node
for (int neighbor : adjList[currentNode]) {
if (!visited[neighbor]) {
dfs(neighbor, adjList, visited); // Recursive call for the neighbor
}
}
}
int main() {
// Variables to store the number of nodes and edges
int nodes, edges;
// Input number of nodes and edges
cout << "Enter the number of nodes: ";
cin >> nodes;
cout << "Enter the number of edges: ";
cin >> edges;
// Create an adjacency list for the graph
vector<vector<int>> adjList(nodes);
// Input all edges
cout << "Enter the edges (format: u v for an edge between u and v):\n";
for (int i = 0; i < edges; i++) {
int u, v;
cin >> u >> v;
adjList[u].push_back(v); // Add edge from u to v
adjList[v].push_back(u); // Add edge from v to u (for undirected graph)
}
// Input the starting node for DFS
int startNode;
cout << "Enter the starting node for DFS: ";
cin >> startNode;
// Perform DFS traversal
vector<bool> visited(nodes, false); // Vector to keep track of visited nodes
cout << "DFS traversal starting from node " << startNode << ": ";
dfs(startNode, adjList, visited);
return 0;
}
content_copyCOPY
Comments