经典算法

邻接矩阵和队列实现BFS

通过邻接矩阵,和队列(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;
}