Breadth First Search

Greedy Algorithm

C++ Code

A graph traversal algorithm that starts traversing the graph from a specified source vertex and explores all the vertices at the current level before moving on to the next level - BFS Visualizer

Time Complexity: O(m+n), where m is the number of edges and n is the number of vertices


            void BFS(vector<vector<int>> &graph, int vertix)
              {
                  if (visited.empty())
                  {
                      visited.resize(graph.size(), false);
                  }
              
                  queue<int> queue;
                  queue.push(vertix);
                  visited.at(vertix) = true;
              
                  while (!queue.empty())
                  {
                      int current_vertix = queue.front();
                      queue.pop();
              
                      for (int i = 0; i < graph.at(current_vertix).size(); i++)
                      {
              
                          if (!visited.at(graph.at(current_vertix).at(i)))
                          {
                              queue.push(graph.at(current_vertix).at(i));
                              visited.at(graph.at(current_vertix).at(i)) = true;
                          }
                      }
              
                      cout < "Finished the Discovery of Vertix (" < current_vertix < ")" < endl;
                  }
              }
              
              // Example Run
              int main()
              {
                  //  Sample Adjecency List
                  vector<vector<int>> graph = {
                      {1, 2},
                      {0, 2, 3},
                      {0, 1},
                      {1}};
              
                  // Sample Run
                  BFS(graph, 0);
              }