Вот пример программы поиска в глубину (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 рекурсивно посещает все узлы графа, отмечая их как посещенные и печатая их значения.