1
/**//*
 2
    그래프 검색(깊이우선)
 3
*/
 4
#include <stdio.h>
 5
 6
#define N 8        //정점 수
 7
 8
int graph[N+1][N+1] = //인접 행렬
 9
...{
10
    ...{0, 0, 0, 0, 0, 0, 0, 0, 0},
11
    ...{0, 0, 1, 0, 0, 0, 0, 0, 0},
12
    ...{0, 1, 0, 1, 1, 0, 0, 0, 0},
13
    ...{0, 0, 1, 0, 0, 0, 0, 1, 0},
14
    ...{0, 0, 1, 0, 0, 1, 0, 0, 0},
15
    ...{0, 0, 0, 0, 1, 0, 1, 0, 0},
16
    ...{0, 0, 0, 0, 0, 1, 0, 1, 1},
17
    ...{0, 0, 0, 1, 0, 0, 1, 0, 1},
18
    ...{0, 0, 0, 0, 0, 0, 1, 1, 0},
19
};
20
21
int v[N + 1];    //방문 플래그
22
23
void Visit(int);
24
25
void main(void)
26
...{
27
    int i;
28
    for(i = 1;i <= N;i++)
29
    ...{
30
        v[i] = 0;
31
    }
32
    Visit(1);
33
    printf("\n");
34
}
35
36
void Visit(int i)
37
...{
38
    int j;
39
    v[i] = 1;
40
    for(j = 1;j <= N;j++)
41
    ...{
42
        if(graph[i][j] == 1 && v[j] == 0)
43
        ...{
44
            printf("%d->%d ", i, j);
45
            Visit(j);
46
        }
47
    }
48
}