1. 문제 : https://www.acmicpc.net/problem/1944
2. 풀이 : Kruskal + BFS
3. 설명
출발 지점에서 로봇과 복제된 로봇이 열쇠까지 이동하는 최단 거리와, 열쇠가 있는 지점에서 복제된 로봇이 다른 열쇠가 있는 지점까지 이동하는 최단 거리를 표현하면 그림[1]과 같다. 각각의 최단 거리는 S지점과, K지점에서의 BFS로 구할 수 있다.
출발 지점과 열쇠가 있는 지점을 넘버링하여 표현을 하면 그림[2]와 같다. 로봇이 모든 열쇠를 최소의 움직임으로 찾기 위해서는 위의 그래프에서 MST를 생성했을 때이다.
그림[3]과 같이 6번의 움직임으로 모든 열쇠를 찾을 수 있으며, 이 때의 움직임이 최소 횟수가 된다. MST는 간선의 수가 '노드의 수 - 1'이므로, MST를 생성하였을 때 간선의 수가 '노드의 수 - 1'보다 적다면 로봇은 모든 열쇠를 찾을 수 없다.
4. 코드
[백준][BOJ13418] 학교 탐방하기 (0) | 2021.06.21 |
---|---|
[백준][BOJ2406] 안정적인 네트워크 (0) | 2021.06.19 |
[백준][BOJ14621] 나만 안되는 연애 (0) | 2021.06.19 |
[백준][BOJ9373] 복도 뚫기 (0) | 2021.06.14 |
[백준][BOJ1647] 도시 분할 계획 (0) | 2021.06.12 |
댓글 영역