广度优先搜索c++
时间: 2023-06-21 18:17:20 浏览: 84
c/c++语言实现的广度优先搜索算法
5星 · 资源好评率100%
当你需要实现广度优先搜索(BFS)算法时,可以按照以下步骤操作:
1. 创建一个队列,用于存储需要遍历的节点。
2. 将起始节点加入队列中,并标记为已访问。
3. 当队列不为空时,执行以下操作:
a. 取出队列的头部节点。
b. 遍历该节点的相邻节点,如果相邻节点未被访问过,则将其加入队列中,并标记为已访问。
4. 重复步骤3,直到队列为空。
下面是一个简单的 C++ 实现:
```c++
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
void bfs(int start, vector<vector<int>>& graph) {
queue<int> q;
vector<bool> visited(graph.size(), false);
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() {
vector<vector<int>> graph = {{1, 2}, {0, 2, 3}, {0, 1, 3}, {1, 2}};
bfs(0, graph);
return 0;
}
```
以上代码实现了一个简单的 BFS 算法,用于遍历一个有向图。在这个例子中,用 `vector<vector<int>>` 表示有向图,其中 `graph[i]` 表示节点 i 的邻居节点列表。函数 `bfs` 接受一个起始节点编号和邻接表 `graph`,并输出 BFS 遍历的结果。
阅读全文