문제 분류 수업 진도 대회 채점현황 순위 질문게시판
게임
스도쿠 타이핑 리듬 타자게임 타이핑 테트리스 타이핑 인베이더 타이핑 지뢰찾기 8192 공룡게임 타이핑 플래피버드 랭킹
로그인

8042 : 도로 보수

•시간제한: 2.000 S •메모리제한: 256 MB •제출: 0 •통과: 0 •만든사람: suakii

8042 : 도로 보수

시간 2.000s · 메모리 256MB · 제출 0 · 정답 0

문제 설명

$N$개의 도시와 이들 사이에 도로를 보수하기 위해 필요한 견적 비용이 명시된 $M$개의 정보가 양방향 도로 가중치 그래프로 주어집니다.
모든 도시가 서로 오갈 수 있도록 연결하면서 도로의 총 보수 비용을 최소화하려고 합니다. 필요한 최소 보수 비용의 총합을 구하는 프로그램을 작성하시오.



[제약 조건]
• $1 \le N \le 100{,}000$
• $1 \le M \le 200{,}000$
• $1 \le a, b \le N$
• $1 \le c \le 10^9$

입력 설명

첫째 줄에 도시의 수 $N$과 도로의 수 $M$이 공백으로 구분되어 주어집니다. ($1 \le N \le 100,000$, $1 \le M \le 200,000$)
다음 $M$개의 줄에 걸쳐 도로가 잇는 두 도시 $a, b$와 보수 견적 비용 $c$가 주어집니다. ($1 \le a, b \le N$, $1 \le c \le 10^9$)

출력 설명

최소 도로 보수 비용의 총합을 출력합니다. 만약 모든 도시를 도로망으로 연결하는 것이 불가능하다면 IMPOSSIBLE을 출력합니다.

입력 예시
COPY
복사되었습니다!

5 6
1 2 3
2 3 5
2 4 2
3 4 8
5 1 7
5 4 4

출력 예시
COPY
복사되었습니다!

14

도움

이 문제는 주어진 가중치 그래프에서 최소 신장 트리(Minimum Spanning Tree, MST)를 구하는 문제입니다.
크루스칼(Kruskal) 알고리즘 또는 프림(Prim) 알고리즘을 활용합니다.
크루스칼 알고리즘 적용 시 모든 간선을 비용 기준으로 오름차순 정렬한 뒤, Union-Find 자료구조를 통해 두 정점이 사이클을 이루지 않을 때만 간선을 선택해 연결해 나갑니다. 최종 선택한 간선 수가 $N-1$개가 아니라면 연결이 불가능한 상태이므로 IMPOSSIBLE을 처리합니다.

출처/분류

NOTICE  —  BFStudy OJ 정보샘
애들아, 문제 많이 풀고 게임 잠깐 하는거지?
— 정보샘