图的bfs遍历算法代码
时间: 2023-09-15 22:16:38 浏览: 90
下面是使用邻接矩阵实现的BFS遍历算法代码:
```c++
#include <iostream>
#include <queue>
using namespace std;
const int MAXN = 100; // 最大顶点数
const int INF = 0x3f3f3f3f; // 无穷大
int n, m; // 顶点数、边数
int graph[MAXN][MAXN]; // 邻接矩阵
bool visited[MAXN]; // 标记是否访问过
void BFS(int s) { // s为起点
queue<int> q; // 定义队列
visited[s] = true;
q.push(s);
while (!q.empty()) {
int u = q.front();
q.pop();
cout << u << " ";
for (int v = 0; v < n; ++v) {
if (graph[u][v] != INF && !visited[v]) {
visited[v] = true;
q.push(v);
}
}
}
}
int main() {
cin >> n >> m; // 输入顶点数、边数
// 初始化邻接矩阵
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
graph[i][j] = INF;
}
}
// 输入边的信息
for (int i = 0; i < m; ++i) {
int u, v, w;
cin >> u >> v >> w; // 输入一条边的起点、终点、权值
graph[u][v] = w;
graph[v][u] = w; // 无向图需要添加反向边
}
// 初始化visited数组
for (int i = 0; i < n; ++i) {
visited[i] = false;
}
BFS(0); // 从顶点0开始BFS遍历
return 0;
}
```
输入格式为:第一行输入顶点数n和边数m,接下来m行每行输入一条边的起点、终点和权值。
输出为BFS遍历的结果。
阅读全文