能不能写一个无向图的BFS算法
时间: 2023-05-14 11:06:04 浏览: 121
(有向)图基于BFS的最短距离算法(java源码)
当然可以,以下是一个无向图的BFS算法的示例代码:
```
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
void bfs(vector<vector<int>>& graph, int start) {
queue<int> q;
vector<bool> visited(graph.size(), false);
q.push(start);
visited[start] = true;
while (!q.empty()) {
int curr = q.front();
q.pop();
cout << curr << " ";
for (int neighbor : graph[curr]) {
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(graph, 0);
return 0;
}
```
这个算法使用了一个队列和一个visited数组来实现BFS。我们从起点开始,将其加入队列中,并将其标记为已访问。然后,我们不断从队列中取出一个节点,并将其未访问的邻居加入队列中,并标记为已访问。这样,我们就可以遍历整个图了。
阅读全文