728x90
- 자료구조
- 연결 리스트
- 이진 트리
- 스택
- 큐
- 해시
- 정렬
- 버블 정렬
- 선택 정렬
- 삽입 정렬
- 퀵 정렬
- 힙 정렬
- 알고리즘
- 재귀 함수
- 너비 우선탐색(BFS)
- 깊이 우선탐색(DFS)
- 다익스트라
깊이 우선탐색(Depth First Search)
- 시작 노드를 v[]배열에 입력한다.
- 시작 노드의 인접한 노드를 순차적으로 방문한다.
- 이미 방문한 노드를 제외하고 더이상 방문할 노드가 없으면 시작 노드로 되돌아 온다.
- 2~3번을 반복한다.
소스코드
#define __main
#ifdef __main
#include <stdio.h>
#define MAX 128
int v[MAX] = { 0 };
int xy[MAX][MAX] = { 0 };
void DFS(int n, int s) {
v[s] = 1;
printf("%d 번 노드 방문\n", s);
for (int i = 0; i < n; i++) {
if (xy[s][i] == 1 && v[i] == 0) DFS(n, i);
}
}
int main() {
int n, m, start, x, y;
scanf("%d %d %d", &n, &m, &start);
for (int i = 0; i < m; i++) {
scanf("%d %d", &x, &y);
xy[x][y] = xy[y][x] = 1;
}
DFS(n, start);
return 0;
}
/*
Test Input Data
10 9 0
0 1
0 2
0 3
3 4
3 6
4 8
6 7
7 9
5 9
*/
#endif
'프로그래밍 > C언어' 카테고리의 다른 글
[알고리즘] 다익스트라 (0) | 2020.11.25 |
---|---|
[알고리즘] 너비 우선탐색(BFS) (0) | 2020.11.21 |
[알고리즘] 재귀 함수 (0) | 2020.11.19 |
[정렬] 힙 정렬 (0) | 2020.11.17 |
[정렬] 퀵 정렬 (0) | 2020.11.10 |