From 67c91e467624984771982fbf4d305acc2c27b10b Mon Sep 17 00:00:00 2001 From: SinghAkhileshwar <97844509+SinghAkhileshwar@users.noreply.github.com> Date: Fri, 14 Oct 2022 18:05:10 +0530 Subject: [PATCH] Added BFS --- cpp/BFS.cpp | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 cpp/BFS.cpp diff --git a/cpp/BFS.cpp b/cpp/BFS.cpp new file mode 100644 index 0000000..fce318a --- /dev/null +++ b/cpp/BFS.cpp @@ -0,0 +1,62 @@ +#include +using namespace std; +class Graph +{ + int V; + vector> adj; +public: + Graph(int V); + void addEdge(int v, int w); + void BFS(int s); +}; + +Graph::Graph(int V) +{ + this->V = V; + adj.resize(V); +} + +void Graph::addEdge(int v, int w) +{ + adj[v].push_back(w); +} + +void Graph::BFS(int s) +{ + vector visited; + visited.resize(V,false); + list queue; + visited[s] = true; + queue.push_back(s); + + while(!queue.empty()) + { + s = queue.front(); + cout << s << " "; + queue.pop_front(); + for (auto adjecent: adj[s]) + { + if (!visited[adjecent]) + { + visited[adjecent] = true; + queue.push_back(adjecent); + } + } + } +} +int main() +{ + 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); + + cout << "Following is Breadth First Traversal " + << "(starting from vertex 2) \n"; + g.BFS(2); + + return 0; +}