본문 바로가기
Computer Science

BFS queue

by OKOK 2019. 1. 15.

1. okay2

2. 가구까지 완벽쓰

3. 한쪽은 창고로 쓰면 됨

4. 오케이!


1. BFS 를 사용

2. 큐를 사용 


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
56
#include <stdio.h>
 
#define MAX_VERTEX 30
 
int num;
int map[MAX_VERTEX][MAX_VERTEX];
int visit[MAX_VERTEX];
int queue[MAX_VERTEX];
int rear, front;
 
void breadthFirstSearch(int vertex) {
    int i;
    visit[vertex] = 1;
    printf("%d ", vertex);
    queue[rear++= vertex;
    while (front < rear) {
        vertex = queue[front++];
        for (i = 1; i <= num; i++) {
            if (map[vertex][i] == 1 && !visit[i]) {
                visit[i] = 1;
                printf("%d ", i);
                queue[rear++= i;
            }
        }
    }
}
 
int main(void) {
    freopen("input.txt""r", stdin);
    int T, test_case, i, j, start, v1, v2;
    scanf("%d"&T);
    for (test_case = 1; test_case <= T; test_case++) {
        for (i = 0; i < MAX_VERTEX; i++) {
            for (j = 0; j < MAX_VERTEX; j++) {
                map[i][j] = 0;
            }
            visit[i] = 0;
            queue[i] = 0;
        }
        front = 0;
        rear = 0;
        scanf("%d %d"&num, &start);
 
        while (true) {
            scanf("%d %d"&v1, &v2);
            if (v1 == -1 && v2 == -1) {
                break;
            }
            map[v1][v2] = map[v2][v1] = 1;
        }
        printf("#%d ", test_case);
        breadthFirstSearch(start);
        printf("\n");
    }
    return 0;
}
cs

 



'Computer Science' 카테고리의 다른 글

Permutation & Combination  (0) 2019.01.16
Dynamic programming  (0) 2019.01.16
Deque  (0) 2019.01.14
Linked List  (0) 2019.01.14
Graph  (0) 2019.01.14

댓글