Программа поиска в глубину (DFS) на C++ с примером кода

Вот пример программы поиска в глубину (DFS), реализованной на C++:

#include <iostream>
#include <vector>
using namespace std;
// Function to perform DFS
void DFS(int node, vector<int>& visited, vector<vector<int>>& graph) {
    visited[node] = 1; // Mark the current node as visited
    cout << node << " ";
    // Traverse all the adjacent nodes of the current node
    for (int i = 0; i < graph[node].size(); ++i) {
        int adjacentNode = graph[node][i];
        if (!visited[adjacentNode]) {
            DFS(adjacentNode, visited, graph);
        }
    }
}
// Main function
int main() {
    int numNodes, numEdges;
    cout << "Enter the number of nodes: ";
    cin >> numNodes;
    cout << "Enter the number of edges: ";
    cin >> numEdges;
    vector<vector<int>> graph(numNodes);
    vector<int> visited(numNodes, 0);
    cout << "Enter the edges: " << endl;
    for (int i = 0; i < numEdges; ++i) {
        int u, v;
        cin >> u >> v;
        // Adding edges to the graph
        graph[u].push_back(v);
        graph[v].push_back(u);
    }
    int startNode;
    cout << "Enter the starting node: ";
    cin >> startNode;
    cout << "Depth-First Traversal: ";
    DFS(startNode, visited, graph);
    return 0;
}

Эта программа реализует алгоритм DFS для обхода графа. Он принимает от пользователя данные о количестве узлов, количестве ребер, ребер и стартовом узле. Функция DFS рекурсивно посещает все узлы графа, отмечая их как посещенные и печатая их значения.