经典算法

邻接矩阵和递归DFS

使用邻接矩阵数据结构,通过递归算法实现图的深度优先遍历(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;
}