Depth-first Search

Loading editor...

#include <bits/stdc++.h>

using namespace std;

void dfsSearch(int u, const vector<vector<int>> &adjacency, vector<bool> &visited) {
    visited[u] = true; // Mark the vertex as discovered

    // Recur for every unvisited neighbour
    for (int v : adjacency[u]) {
        if (!visited[v]) {
            dfsSearch(v, adjacency, visited);
        }
    }
}

void dfs(const vector<vector<int>> &adjacency, int start) {
    int n = static_cast<int>(adjacency.size()); // Number of vertices (0‑based indexing)
    vector<bool> visited(n, false);

    dfsSearch(start, adjacency, visited);
}
Number of nodes.
Edges between nodes, one per line.