通过邻接矩阵,和队列(queue)实现图的广度优先遍历(BFS)
【输入样例】
7
0 1 1 0 0 0 0
0 0 1 1 1 0 0
1 1 0 0 0 1 0
0 1 0 0 0 0 0
0 1 0 0 0 0 0
0 0 1 0 0 0 1
0 0 0 0 1 1 0
【输出样例】
A B C D E F G
【参考程序】
//爱码岛编程
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 105;
int adj[MAXN][MAXN];
int visited[MAXN];
int n;
queue<int> que;
void visit(int w){
cout << char(w + 'A') << " ";
}
void bfs(int w){
que.push(w);
visited[w] = 1;
while(!que.empty()){
w = que.front();
que.pop();
//访问
visit(w);
for(int j = 0; j < n; j++){
if(adj[w][j] == 1 && !visited[j]){
que.push(j);
visited[j] = 1;
}
}
}
}
int main() {
cin >> n;
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
cin >> adj[i][j];
}
}
bfs(0);
return 0;
}