宽度优先搜索模板代码C++语言
时间: 2024-11-23 16:19:32 浏览: 6
宽度优先搜索 (Breadth-First Search, BFS) 是图论中的遍历算法,它从给定的起点开始,按层次顺序逐层探索节点。下面是使用 C++ 编写的简单宽度优先搜索模板代码:
```cpp
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
// 图的邻接表表示
const int MAX_NODES = 100;
vector<int> adj[MAX_NODES];
// 用于标记节点是否已访问
bool visited[MAX_NODES] = {false};
void bfs(int start) {
queue<int> q; // 使用队列存储待处理的节点
visited[start] = true; // 标记起始节点为已访问
q.push(start); // 将起始节点放入队列
while (!q.empty()) {
int curr = q.front(); // 取出队首节点
cout << curr << " "; // 打印节点值
q.pop();
// 遍历当前节点的所有邻居
for (int neighbor : adj[curr]) {
if (!visited[neighbor]) {
visited[neighbor] = true; // 标记邻居为已访问
q.push(neighbor); // 将未访问的邻居加入队列
}
}
}
}
int main() {
// 添加边并初始化邻接表
// 这里假设我们手动添加了边
// ...
int startNode; // 起点节点
cout << "Enter the starting node: ";
cin >> startNode;
bfs(startNode);
return 0;
}
```
在这个代码中,`bfs` 函数接受起点 `start`,然后使用一个队列 `q` 存储需要处理的节点。当队列非空时,它会取出队首节点、访问该节点并将其所有未访问的相邻节点入队。
阅读全文