전선 연결하기

월간 향유회 2025. 03. C번 BOJ 33686번
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1.5 초 1024 MB172373230.769%

문제

$N$개의 마을과 두 마을을 양방향으로 잇는 $N-1$개의 도로가 있다. 이 도로만을 이용해 임의의 두 마을 사이를 이동하는 것이 가능하다. 즉, 도로는 트리 형태를 이루고 있다.

두 마을을 잇는 전선 $N-1$개를 설치해 $N$개의 마을을 모두 이으려고 한다. 어떤 두 마을을 전선으로 이을 때 필요한 전선의 길이는 그 두 마을 사이의 거리와 같다. 이때 두 마을 사이의 거리는 두 마을을 잇는 단순 경로를 이루는 도로들의 길이의 합으로 정의된다. 단, 두 마을 사이를 잇는 도로가 있는 경우에는 그 두 마을 사이를 잇는 전선을 설치할 수 없다.

모든 마을을 전선으로 이어서 임의의 두 마을 사이를 전선만으로 오가는 것이 가능한지 판별하고 가능하다면 필요한 전선 길이의 합의 최솟값을 구해보자.

입력

첫째 줄에 마을의 개수를 나타내는 정수 $N$이 주어진다. $(2 \leq N \leq 200\ 000)$

다음 $N-1$줄에 걸쳐 도로를 나타내는 세 정수 $a_i$, $b_i$, $w_i$가 공백으로 구분되어 주어진다. 이는 $i$번째 도로가 $a_i$ 마을과 $b_i$ 마을을 잇고 있으며 길이가 $w_i$임을 나타낸다. $(1 \leq a_i, b_i \leq N; a_i\neq b_i; 1\leq w_i \leq 10^9)$

출력

만약 마을 모두를 전선으로 잇는 것이 불가능하다면 -1을 출력한다. 그렇지 않다면 마을 모두를 잇기 위해 필요한 전선 길이의 합의 최솟값을 출력한다.

예제 입력 1

4
1 2 1
2 3 2
3 4 3

예제 출력 1

14

예제 입력 2

4
1 2 1
1 3 2
1 4 3

예제 출력 2

-1

예제 입력 3

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

예제 출력 3

57

출처

Contest > BOJ User Contest > 월간 향유회 > 월간 향유회 2025. 03. C번

  • 문제를 만든 사람: pyb1031
  • 문제를 검수한 사람: chogahui05, cologne, jthis, lky7674, tony9402, utilforever