请用c++语言实现BDFS
时间: 2024-04-08 21:32:52 浏览: 161
当然可以!下面是使用C++语言实现广度优先搜索(BFS)的示例代码:
```c++
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
// 用于表示图的邻接表
vector<vector<int>> graph;
// 广度优先搜索函数
void bfs(int start) {
// 标记顶点是否被访问过
vector<bool> visited(graph.size(), false);
// 创建一个队列用于存储待访问的顶点
queue<int> q;
// 将起始顶点加入队列并标记为已访问
q.push(start);
visited[start] = true;
while (!q.empty()) {
// 取出队首顶点并输出
int current = q.front();
q.pop();
cout << current << " ";
// 遍历当前顶点的所有邻接顶点
for (int neighbor : graph[current]) {
// 如果邻接顶点未被访问,则加入队列并标记为已访问
if (!visited[neighbor]) {
q.push(neighbor);
visited[neighbor] = true;
}
}
}
}
int main() {
// 创建一个示例图,使用邻接表表示
graph.resize(7);
graph[0] = {1, 2};
graph[1] = {0, 3, 4};
graph[2] = {0, 5, 6};
graph[3] = {1};
graph[4] = {1};
graph[5] = {2};
graph[6] = {2};
cout << "BFS Traversal: ";
bfs(0); // 从顶点0开始进行BFS
return 0;
}
```
这段代码实现了一个简单的图的广度优先搜索算法。你可以根据自己的需求修改示例图的大小和边的连接关系,然后调用`bfs`函数进行广度优先搜索。输出结果将会是广度优先遍历的顶点序列。
阅读全文