给一个用C++的真代码
时间: 2024-12-17 19:20:25 浏览: 1
当然可以,下面是一个简单的C++代码片段,实现了深度优先搜索(DFS)在一个邻接矩阵表示的无向图上,从指定起点开始:
```cpp
#include <iostream>
#include <vector>
#include <stack>
// 定义邻接矩阵
std::vector<std::vector<int>> adjMatrix; // 根据实际情况调整维度
void dfs(int node, std::vector<bool>& visited) {
visited[node] = true;
std::cout << node << " "; // 打印当前节点
// 检查是否有未访问的邻居
for (int neighbor : adjMatrix[node]) {
if (!visited[neighbor]) {
dfs(neighbor, visited);
}
}
}
int main() {
int n, startNode;
std::cin >> n;
// 初始化邻接矩阵(假设用户输入的都是整数)
adjMatrix.resize(n, std::vector<int>(n));
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
std::cin >> adjMatrix[i][j];
}
}
std::cin >> startNode;
startNode--; // 因为索引是从0开始的
bool visited[n]; // 初始时所有节点未访问
for (int i = 0; i < n; ++i) {
visited[i] = false;
}
dfs(startNode, visited);
return 0;
}
```
这个程序首先读取顶点的数量和邻接矩阵,然后初始化一个布尔向量`visited`来跟踪已经访问过的节点。接着,它从起始节点开始执行深度优先搜索。注意,你需要根据实际的邻接矩阵输入替换`adjMatrix`的填充部分。
阅读全文