编程实现:输入图的邻接矩阵,然后用BFS遍历图C++
时间: 2023-08-04 21:38:03 浏览: 100
以下是C++实现:
```cpp
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
void bfs(vector<vector<int>>& adj_matrix, int start) {
queue<int> q;
vector<bool> visited(adj_matrix.size(), false);
// 将起始节点加入队列并标记已访问
q.push(start);
visited[start] = true;
// 遍历队列中的每个节点
while (!q.empty()) {
int node = q.front();
q.pop();
cout << node << " ";
// 遍历当前节点的邻居节点
for (int neighbor = 0; neighbor < adj_matrix.size(); neighbor++) {
if (adj_matrix[node][neighbor] && !visited[neighbor]) {
// 将未访问过的邻居节点加入队列并标记已访问
q.push(neighbor);
visited[neighbor] = true;
}
}
}
}
int main() {
vector<vector<int>> adj_matrix = {
{0, 1, 1, 0},
{1, 0, 1, 1},
{1, 1, 0, 1},
{0, 1, 1, 0}
};
bfs(adj_matrix, 0);
return 0;
}
```
输出结果为:`0 1 2 3`,表示从节点0开始,按照BFS的顺序遍历了整个图。其中,邻接矩阵表示的图为:
```
0 --- 1
| \ |
| \ |
| \ |
2 --- 3
```
阅读全文