본문 바로가기
Computer Science

Contact

by OKOK 2019. 1. 24.

1. 배열의 102, 0을 사용함

2. 101의 경우는 visit 함수를 대신하고

3. 0의 경우는 거리를 저장함

4. 그러므로 다른 배열을 선언하지 않고, 사용함

5. 오케이 


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
57
58
59
60
61
62
63
64
65
66
67
#include <stdio.h>
 
int Answer, Map[101][102], Queue[10000], front, rear;
 
void BFS(int v)
{
    int w;
    Queue[++rear] = v;
    Map[v][101= 1// visit 를 대신하는 배열 [2][101]을 기록해둠
 
    while (rear != front)
    {
        v = Queue[++front];
        for (w = 1; w <= 100++w)
        {
            if (Map[v][w])
            {
                if (!Map[w][101])
                {
                    Queue[++rear] = w; // 새로운 출발점을 queue 에 넣음
                    Map[w][0= Map[v][0+ 1// [][0] 은 거리를 표시하는 장소로 쓰임
                    Map[w][101= 1// w에서 출발하는 것에 대해서 표시해둠
                }
            }
        }
    }
}
 
int main(void)
{
    freopen("input.txt""r", stdin);
    int t;
    for (t = 1; t <= 10++t)
    {
        int N, Start, i, j, from, to, max = 0;
        for (i = 0; i <= 100++i)
            for (j = 0; j <= 101++j)
                Map[i][j] = 0;
        rear = front = -1, Answer = 0;
 
        scanf("%d %d"&N, &Start);
        for (i = 0; i < N / 2++i)
        {
            scanf("%d %d"&from, &to);
            Map[from][to] = 1;
        }
 
        BFS(Start);
 
        for (i = 1; i <= 100++i)
        {
            if (max < Map[i][0]) // 가장 거리가 긴 것을 찾음
            {
                max = Map[i][0];
                Answer = i;
            }
            else if (max == Map[i][0]) // 거리가 같다면, 인덱스 숫자가 넣은 것을 찾음
            {
                if (Answer < i) Answer = i;
            }
        }
 
        printf("#%d %d\n", t, Answer);
    }
    return 0;
}
 
cs

 


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

암호코드 스캔  (0) 2019.01.24
단순 2진 암호코드  (0) 2019.01.24
비밀번호  (0) 2019.01.24
사칙연산 유효성 검사  (0) 2019.01.24
중위순회  (0) 2019.01.23

댓글