YoonWould!!

1260번 DFS와 BFS 본문

<SW>/알고리즘 + 자료구조

1260번 DFS와 BFS

Hading 2018. 3. 28. 22:00
728x90

문제 


https://www.acmicpc.net/problem/1260



해결 방법


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include<stdio.h>
 
int MAP[1001][1001]; // 맵 설정 
int D[1001= { 0 };//출력공간 초기화
int Q[1001= { 0 };//BFS pop으로 나오기전 저장공간
int B[1001= { 0 };
int N, M, V; // 정점, 간선 , 탑색을 시작할 정점의 번호
 
void DFS(int V)
{
    printf("%d ", V); // 처음은 1
    D[V] = 1;
    for (int i = 1; i <= N; i++)
    {
        if (MAP[V][i] == 1 && D[i] != 1)
            DFS(i);
    }
}
int head = 0, tail = 0;
void BFS(int V)
{
    int a;
    B[V] = 1;
    Q[tail++= V; // 꼬리를 늘려가면서 추가한다 
    while (head != tail)
    {
        a = Q[head++];
        printf("%d ", a);
        for (int i = 1; i <= N; i++)  // i-> 1 2 3 4
        {
            if (MAP[a][i] == 1 && B[i] != 1)
            {
                B[i] = 1;
                Q[tail++= i;  //추가
            }
        }
    }
}
 
int main()
{
    scanf("%d %d %d"&N, &M, &V);
    int a,b;
 
    for (int i = 1; i <=M; i++)
    {
        scanf("%d %d"&a, &b);
        MAP[a][b] = MAP[b][a] = 1;
    }
    DFS(V);
    printf("\n");
    BFS(V);
 
    return 0;
}
cs


728x90

'<SW> > 알고리즘 + 자료구조' 카테고리의 다른 글

[BFS]1697번 숨바꼭질  (0) 2018.08.13
[BFS]2178번 미로탐색  (0) 2018.08.11
Sequential Search 구현  (0) 2018.03.28
Binary Search 구현  (0) 2018.03.28
[자료구조]배열과 링크드리스트  (0) 2018.03.24