그래프에서 임의의 두 정점 사이의 거리(Distance)는 두 정점 사이의 최단 경로에 포함된 간선의 개수이다. BFS(breadth-first search, 너비 우선 탐색)를 사용하면 임의의 정점에서 나머지 모든 정점까지의 최단 거리를 구할 수 있다.

dist[x] = 1번 정점에서 x번 정점까지의 거리 배열을 유지하면서 위 그래프의 1번 정점에서 BFS를 시작해보자. dist[1] = 0으로 초기화한다.

dist[2] = dist[1] + 1, dist[4] = dist[1] + 1을 기록한다.

dist[3] = dist[2] + 1, dist[5] = dist[2] + 1을 기록한다.

dist[6] = dist[3] + 1을 기록한다. 그래프의 모든 정점까지의 거리를 저장하는 배열 dist가 완성되었다.
주어진 그래프의 1번 정점을 기준으로 나머지 모든 정점까지의 거리를 구해보자. 1번 정점에서 1번 정점까지 거리는 0이다.
입력
첫째 줄에 그래프의 정점의 개수와 간선의 개수 ~N, M(1 \le N, M \le 50)~이 주어진다. 그래프의 각 정점에는 1부터 N까지 번호가 매겨져 있다.
둘째 줄부터 M개의 줄에 그래프의 간선이 주어진다. 간선은 서로 다른 두 정점 ~u, v(1 \le u, v \le N)~를 잇는다. 주어지는 그래프는 단순 그래프(Simple graph)이다. 따라서 두 정점을 잇는 간선은 최대 한 개 존재할 수 있으며, 자기 자신을 잇는 간선은 없다.
또한 주어지는 그래프는 연결 그래프(Connected graph)이다. 따라서 1번 정점에서 BFS를 통해 모든 정점을 방문할 수 있다.
출력
주어진 그래프의 1번 정점에서 나머지 모든 정점까지의 거리를 출력한다.
예제 입력 1
6 6
1 2
1 4
2 3
2 5
3 6
5 6
예제 출력 1
0 1 2 1 2 3
힌트
BFS 과정 중에 유지하는 visit 배열 외에 거리를 따로 저장하는 dist 배열을 정의한 후에 채워줍니다.
| 순위 | 사용자 | 언어 | 시간 | 메모리 | 코드 길이 |
|---|---|---|---|---|---|
| 🥇 | 202302534_김승현 | Python | 437ms | 10496KB | 537B |
| 🥈 | 202402699_오태영 | Python | 445ms | 10496KB | 662B |
| 🥉 | 202402751_한현욱 | Python | 447ms | 10620KB | 790B |
| 4 | 202102713_진민혁 | Java | 976ms | 26752KB | 1818B |
| 5 | 202402673_박기용 | Java | 985ms | 26752KB | 1596B |
| 6 | 202102622_김우솔 | Java | 994ms | 26880KB | 2061B |
| 7 | 202402748_한가현 | Java | 1236ms | 28416KB | 896B |
| 8 | 202402685_서진영 | Java | 1245ms | 28544KB | 870B |
| 9 | 202302602_이준휘 | Java | 1247ms | 28416KB | 834B |
| 10 | 202102659_안우진 | Java | 1805ms | 33664KB | 1394B |
| # | 사용자 | 결과 | 언어 | 시간 | 메모리 | 코드 길이 | 제출 시간 |
|---|---|---|---|---|---|---|---|
| 4010 | 202302564_성준혁 | 컴파일 에러 | C++ | - | - | 859B | 2024. 05. 25. 16:44 |
| 3629 | 202402685_서진영 | 정답 | Java | 1245ms | 28544KB | 870B | 2024. 05. 13. 11:54 |
| 3628 | 202402656_김영수 | 오답 | Java | 1240ms | 28416KB | 1129B | 2024. 05. 13. 11:33 |
| 3627 | 202402748_한가현 | 정답 | Java | 1236ms | 28416KB | 896B | 2024. 05. 13. 11:30 |
| 3626 | 202302534_김승현 | 정답 | Python | 437ms | 10496KB | 537B | 2024. 05. 13. 11:14 |
| 3625 | 202302534_김승현 | 런타임 에러 | Python | 439ms | 10496KB | 534B | 2024. 05. 13. 11:11 |
| 3624 | 202302534_김승현 | 런타임 에러 | Python | 443ms | 10496KB | 533B | 2024. 05. 13. 11:10 |
| 3622 | 202402673_박기용 | 정답 | Java | 985ms | 26752KB | 1596B | 2024. 05. 13. 11:04 |
| 3620 | 202102622_김우솔 | 정답 | Java | 994ms | 26880KB | 2061B | 2024. 05. 13. 10:53 |
| 3619 | 202402751_한현욱 | 정답 | Python | 447ms | 10620KB | 790B | 2024. 05. 13. 10:50 |
| 3614 | 202402699_오태영 | 정답 | Python | 445ms | 10496KB | 662B | 2024. 05. 13. 10:32 |
| 3612 | 202302602_이준휘 | 정답 | Java | 1247ms | 28416KB | 834B | 2024. 05. 13. 10:23 |
| 3605 | 202102659_안우진 | 정답 | Java | 1805ms | 33664KB | 1394B | 2024. 05. 13. 09:54 |
| 3577 | 202102713_진민혁 | 정답 | Java | 976ms | 26752KB | 1818B | 2024. 05. 13. 01:41 |