https://www.acmicpc.net/problem/1833
MST 알고리즘의 기본문제다. 크루스칼 알고리즘을 통해 해결했다.
유니온 함수의 구현에서 사소한 실수를 해서 WA를 받아 당황했지만 실수를 금방 발견했다.
풀이
주어지는 간선은 양방향 간선이므로 u (0 ..< N), v (u+1 ..< N) 탐색을 통해 중복되는 정보는 배제하고 탐색하였다.
간선이 음수면 이미 연결된 고속도로 이므로 절댓값을 totalCost에 더한 뒤, 두 정점을 연결한다. 주의할 점은 이미 부모가 같은 정점끼리의 간선이 음수로 주어질 수도 있으므로 있으므로 예외처리를 해주어야 한다.
나머지의 경우는 edges 배열에 담아낸 뒤 비용이 적은 간선부터 유니온 함수를 수행한다. 이때 연결된 간선은 배열에 따로 정보를 담아주었다가 출력해 주면 된다.
정답 코드
'Problem Solving > BOJ' 카테고리의 다른 글
[23324] 어려운 모든 정점 쌍 최단 거리 (0) | 2023.10.25 |
---|---|
[23743] 방탈출 (0) | 2023.10.01 |
[16926] 배열 돌리기 1 (0) | 2023.06.15 |
[3015] 오아시스 재결합 (0) | 2023.06.12 |
[14890] 경사로 (0) | 2023.06.03 |