Depth First Search

Graphs

C++ Code

A graph traversal algorithm that explores as far as possible along each branch before backtracking. The algorithm starts at a specified source vertex and explores its neighbors recursively, marking each visited vertex as visited to avoid revisiting them.

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

            vector<bool> visited;
            int current_time = 0;

            void DFS(vector<vector<int>> & graph, int vertix) {
              current_time++;
              if (visited.empty()) {
                visited.resize(graph.size(), false);
              }
            
              visited.at(vertix) = true;
            
              for (int i = 0; i <graph.at(vertix).size(); i++) {
                if (!visited.at(graph.at(vertix).at(i))) {
                  DFS(graph, graph.at(vertix).at(i));
                }
              }
            
              current_time++;
            
              cout << "Finished the Discovery of Vertix (" << vertix << ")";
              // Comment the line below if the time of discovery was not important
              cout << " at time (" << current_time << ")" << endl;
            }