图的BFS使用队列模板
时间: 2024-05-01 17:20:58 浏览: 55
好的,下面是图的BFS(广度优先搜索)算法使用队列模板的代码:
```
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
const int MAXN = 100; // 最大节点数
vector<int> g[MAXN]; // 图的邻接表表示
bool visited[MAXN]; // 节点是否被访问过的标记
void bfs(int start) {
queue<int> q; // 队列
visited[start] = true;
q.push(start); // 将起始节点加入队列
while (!q.empty()) {
int u = q.front();
q.pop(); // 取出队首节点并弹出
cout << u << " "; // 访问节点
// 遍历u的邻接点,将未被访问过的节点加入队列中
for (int i = 0; i < g[u].size(); i++) {
int v = g[u][i];
if (!visited[v]) {
visited[v] = true;
q.push(v);
}
}
}
}
int main() {
// 初始化图的邻接表表示
g[1].push_back(2);
g[1].push_back(3);
g[2].push_back(4);
g[2].push_back(5);
g[3].push_back(6);
g[4].push_back(7);
g[5].push_back(7);
g[6].push_back(7);
bfs(1); // 从节点1开始进行BFS遍历
return 0;
}
```
这里使用了STL中的queue库来实现队列的功能,代码中的注释应该可以让你了解每一步在做什么。
阅读全文