图论bfs算法模板实现c++
时间: 2023-08-22 09:06:21 浏览: 186
当然,下面是一个基本的图论 BFS 算法的 C++ 实现模板:
```cpp
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
// 图的邻接表表示
vector<vector<int>> graph;
// BFS 函数
void bfs(int start) {
// 记录节点是否被访问过的数组
vector<bool> visited(graph.size(), false);
// 创建一个队列用于 BFS
queue<int> q;
// 将起始节点加入队列并标记为已访问
q.push(start);
visited[start] = true;
while (!q.empty()) {
// 取出队列的头节点
int node = q.front();
q.pop();
// 处理当前节点
cout << node << " ";
// 遍历当前节点的邻接节点
for (int neighbor : graph[node]) {
// 如果邻接节点未被访问过,则加入队列并标记为已访问
if (!visited[neighbor]) {
q.push(neighbor);
visited[neighbor] = true;
}
}
}
}
int main() {
// 假设图有 6 个节点,节点编号从 0 到 5
int n = 6;
graph.resize(n);
// 添加图的边
graph[0].push_back(1);
graph[0].push_back(2);
graph[1].push_back(3);
graph[1].push_back(4);
graph[2].push_back(4);
graph[3].push_back(5);
graph[4].push_back(5);
// 从节点 0 开始进行 BFS
bfs(0);
return 0;
}
```
这个模板实现了一个基本的图论 BFS 算法。你可以根据自己的需求修改和扩展这个模板来适应不同的场景。希望对你有帮助!
阅读全文