Skip to content

Commit

Permalink
Create dfs.cpp
Browse files Browse the repository at this point in the history
  • Loading branch information
BhavayGoyal authored Oct 29, 2022
1 parent 963cee3 commit 24d9eb8
Showing 1 changed file with 61 additions and 0 deletions.
61 changes: 61 additions & 0 deletions Graphs/dfs.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@

// C++ program to print DFS traversal from
// a given vertex in a given graph
#include <bits/stdc++.h>
using namespace std;

// Graph class represents a directed graph
// using adjacency list representation
class Graph {
public:
map<int, bool> visited;
map<int, list<int> > adj;

// function to add an edge to graph
void addEdge(int v, int w);

// DFS traversal of the vertices
// reachable from v
void DFS(int v);
};

void Graph::addEdge(int v, int w)
{
adj[v].push_back(w); // Add w to v’s list.
}

void Graph::DFS(int v)
{
// Mark the current node as visited and
// print it
visited[v] = true;
cout << v << " ";

// Recur for all the vertices adjacent
// to this vertex
list<int>::iterator i;
for (i = adj[v].begin(); i != adj[v].end(); ++i)
if (!visited[*i])
DFS(*i);
}

// Driver's code
int main()
{
// Create a graph given in the above diagram
Graph g;
g.addEdge(0, 1);
g.addEdge(0, 2);
g.addEdge(1, 2);
g.addEdge(2, 0);
g.addEdge(2, 3);
g.addEdge(3, 3);

cout << "Following is Depth First Traversal"
" (starting from vertex 2) \n";

// Function call
g.DFS(2);

return 0;
}

0 comments on commit 24d9eb8

Please sign in to comment.