RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
R02023

최소 신장 트리

Gold IV 골드 IV
난이도
1s
시간 제한
256MB
메모리 제한
0
맞았습니다!!
2
제출 수
0.0%
정답률
레이팅

의견: 0

설명

가중치가 있는 무방향 연결 그래프가 주어진다. 이 그래프의 최소 신장 트리(Minimum Spanning Tree)의 가중치를 구하는 프로그램을 작성하시오.

최소 신장 트리란, 그래프의 모든 정점을 연결하는 부분 그래프(트리) 중에서 사용된 간선들의 가중치의 합이 가장 작은 것을 말한다. 그래프는 항상 연결되어 있으므로 최소 신장 트리는 반드시 존재한다.

제약
  • \(1 \le V \le 10\,000\)
  • \(1 \le E \le 100\,000\)
  • \(1 \le A, B \le V\)
  • \(-10^6 \le C \le 10^6\)
  • 그래프는 연결되어 있다.
  • 입력으로 주어지는 모든 값은 정수이다.
입력 형식

첫째 줄에 정점의 개수 \(V\)와 간선의 개수 \(E\)가 주어진다. 정점은 \(1\)번부터 \(V\)번까지 번호가 매겨져 있다.

다음 \(E\)개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 \(A\), \(B\), \(C\)가 주어진다. 이는 \(A\)번 정점과 \(B\)번 정점이 가중치 \(C\)인 간선으로 연결되어 있다는 의미이다. \(C\)는 음수일 수도 있다.

같은 두 정점 사이에 여러 개의 간선이 있을 수 있으며, 양 끝 정점이 같은 간선(\(A = B\))이 주어질 수도 있다.

출력 형식

최소 신장 트리의 가중치의 합을 한 줄에 출력한다.

서브태스크
서브태스크점수설명

Subtask 1

30점

\(1 \le V \le 100,\ 1 \le E \le 2\,000\)

Subtask 2

30점

모든 간선의 가중치가 \(0\) 이상이다 (\(0 \le C\)).

Subtask 3

40점

추가 제한이 없다.

예제 1
입력
3 3
1 2 1
2 3 2
1 3 3
출력
3
설명

간선 \(1\!-\!2\) (가중치 \(1\))와 \(2\!-\!3\) (가중치 \(2\))를 고르면 세 정점이 모두 연결되고, 가중치의 합은 \(1 + 2 = 3\)으로 최소이다.

예제 2
입력
4 5
1 2 1
2 3 3
1 3 2
3 4 -4
2 4 5
출력
-1
설명

간선 \(3\!-\!4\) (가중치 \(-4\)), \(1\!-\!2\) (가중치 \(1\)), \(1\!-\!3\) (가중치 \(2\))를 고르면 모든 정점이 연결되며 합은 \(-4 + 1 + 2 = -1\)이다. 음수 가중치 간선도 사용될 수 있다.

예제 3
입력
5 6
1 2 5
2 3 8
1 3 4
3 4 2
4 5 7
2 5 6
출력
17
설명

간선 \(3\!-\!4\) (\(2\)), \(1\!-\!3\) (\(4\)), \(1\!-\!2\) (\(5\)), \(2\!-\!5\) (\(6\))를 고르면 가중치의 합은 \(2 + 4 + 5 + 6 = 17\)로 최소이다.

문제 정보

rip 작성

출처 지정되지 않음

평가 및 의견

최소 신장 트리

개요
출제자 난이도 Gold IV 골드 IV 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

최소 신장 트리

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8