数据结构图广度优先搜索代码
时间: 2024-06-08 11:03:47 浏览: 11
广度优先搜索(BFS)是一种常用的图搜索算法,它从一个节点开始,逐层遍历图,直到找到目标节点或者遍历完整个图。下面是数据结构图广度优先搜索的代码示例:
```
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
vector<vector<int>> graph; // 图的邻接表表示
vector<bool> visited; // 标记每个节点是否被访问过
void bfs(int start) {
queue<int> q;
q.push(start);
visited[start] = true;
while (!q.empty()) {
int cur = q.front();
q.pop();
cout << cur << " "; // 输出当前遍历的节点
for (int i = 0; i < graph[cur].size(); i++) {
int next = graph[cur][i];
if (!visited[next]) {
q.push(next);
visited[next] = true;
}
}
}
}
int main() {
// 初始化图和visited数组
int n, m; // n表示节点个数,m表示边的个数
cin >> n >> m;
graph.resize(n);
visited.resize(n, false);
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
graph[u].push_back(v);
graph[v].push_back(u); // 如果是无向图,还需要添加反向边
}
// 从节点0开始进行BFS遍历
bfs(0);
return 0;
}
```
以上代码中,`graph`是图的邻接表表示,`visited`数组用于标记每个节点是否被访问过。`bfs`函数接收一个起点作为参数,并在遍历过程中输出每个遍历的节点。在主函数中,首先读入图的信息,并调用`bfs`函数进行遍历。