아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

도시 건설

면접 대비

시간 제한1초메모리 제한512 MB

요약
가중치가 있는 연결 무방향 그래프가 주어질 때, 전체 간선 비용에서 최소 신장 트리 비용을 뺀 절약액을 구하고, 그래프가 연결되어 있지 않으면 -1을 출력한다.
난이도

보통10점 중 5점

유형
최소 신장 트리, 유니온 파인드, 그래프, 그리디
정답자
아직 제출이 없습니다

문제

채완이는 신도시에 건물 사이를 잇는 양방향 도로를 만드는 공사 계획을 세웠다.

공사 계획을 검토하던 중 비용이 생각보다 많이 든다는 것을 알게 되었다.

채완이는 공사 비용을 아끼려고 한다. 모든 건물이 도로로 연결되도록 최소한의 도로만 만들려고 한다.

위 그림은 건물, 직선으로 표시된 도로, 그리고 그 도로를 만들 때 드는 비용을 나타낸 지도이다.

그림에 있는 도로를 모두 설치할 때 드는 비용은 62이다. 모든 건물을 연결하는 도로만 만들면 비용이 27이므로 절약되는 금액은 35이다.

채완이는 도로가 너무 많아 절약되는 금액을 계산하기 어려워한다.

채완이를 대신해 절약되는 금액이 얼마인지 계산하자.

입력

첫 번째 줄에 건물의 개수 NN (3≤N≤105)(3 \le N \le 10^5 )와 도로의 개수 MM (2≤M≤min(N(N−1)2,5×105))(2 \le M \le min( {N(N-1) \over 2}, 5×10^5)) 가 주어진다.

두 번째 줄부터 M+1M + 1번째 줄까지 건물의 번호 aa, bb (1≤a,b≤N,a≠b)(1 \le a, b \le N, a ≠ b)와 두 건물 사이에 도로를 만들 때 드는 비용 c(1≤c≤106)c (1 \le c \le 10^6)가 주어진다. 같은 쌍의 건물을 연결하는 두 도로는 주어지지 않는다.

출력

예산을 얼마나 절약할 수 있는지 출력한다. 만약 모든 건물이 연결되어 있지 않다면 -1을 출력한다.

예제3

  1. 예제 1

    입력
    7 9
    1 2 15
    2 3 7
    1 3 3
    1 4 8
    3 5 6
    4 5 4
    4 6 12
    5 7 1
    6 7 6
    
    예상 출력
    35
    
  2. 예제 2

    입력
    8 10
    1 2 4
    2 3 9
    2 4 9
    3 4 4
    3 5 1
    4 6 14
    6 7 5
    5 7 3
    7 8 7
    6 8 3
    
    예상 출력
    30
    
  3. 예제 3

    입력
    5 4
    1 2 1
    2 3 1
    3 1 1
    4 5 5
    
    예상 출력
    -1