使用邻接矩阵数据结构,通过递归算法实现图的深度优先遍历(DFS)
 
【输入样例】
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 F G E D
【参考程序】
//爱码岛编程
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100;
int adj[MAXN][MAXN];
int visited[MAXN];
int n;
void visit(int w){
	visited[w] = 1;
    cout << char(w + 'A') << " ";
}
// 连通性
void dfs(int w) {
    if (visited[w]) {
        return;
    }
    visit(w);
	
    int j = 0;
    for (; j < n; j++) {
        if (adj[w][j] == 1 && !visited[j]) {
            dfs(j);
            break;
        }
    }
}
int main() {
    cin >> n;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cin >> adj[i][j];
        }
    }
	
	cout << endl;
	
    for (int i = 0; i < n; i++) {
        if (!visited[i])
            dfs(i);
    }
    return 0;
}