가장 날씬한 신장 트리

면접 대비

시간 제한2초메모리 제한128 MB

요약
가중치 그래프에서 최대 변 가중치와 최소 변 가중치의 차이가 가장 작은 신장트리를 찾고, 연결되지 않으면 -1을 출력합니다.
난이도

보통10점 중 4점

유형
유니온 파인드, 정렬, 그리디
정답자
아직 제출이 없습니다

문제

가중치가 있는 무방향 그래프 GG가 주어질 때, 아래에서 정의하는 신장 트리 하나를 찾아야 한다.

그래프 GG는 순서쌍 (V,E)(V, E)이다. 여기서 VV는 정점의 집합 {v1,v2,…,vn}\{v_1, v_2, \dots, v_n\}이고, EE는 무방향 간선의 집합 {e1,e2,…,em}\{e_1, e_2, \dots, e_m\}이다. 각 간선 e∈Ee \in E는 가중치 w(e)w(e)를 가진다.

신장 트리 TT는 nn개의 모든 정점을 n−1n - 1개의 간선으로 잇는 트리(사이클이 없는 연결 부분그래프)이다. 신장 트리 TT의 날씬함(slimness)은 TT를 이루는 n−1n - 1개 간선의 가중치 중 최댓값과 최솟값의 차로 정의한다.

그림 5: 그래프 GG와 간선들의 가중치.

예를 들어 그림 5(a)의 그래프 GG는 네 정점 {v1,v2,v3,v4}\{v_1, v_2, v_3, v_4\}와 다섯 무방향 간선 {e1,e2,e3,e4,e5}\{e_1, e_2, e_3, e_4, e_5\}를 가진다. 그림 5(b)에서 보듯 간선의 가중치는 w(e1)=3w(e_1) = 3, w(e2)=5w(e_2) = 5, w(e3)=6w(e_3) = 6, w(e4)=6w(e_4) = 6, w(e5)=7w(e_5) = 7이다.

그림 6: GG의 신장 트리 예시.

GG에는 여러 신장 트리가 있다. 그중 넷을 그림 6(a)~(d)에 나타냈다. 그림 6(a)의 신장 트리 TaT_a는 가중치가 3,6,73, 6, 7인 세 간선으로 이루어진다. 최댓값은 77, 최솟값은 33이므로 TaT_a의 날씬함은 44이다. 그림 6(b), (c), (d)에 나타낸 신장 트리 TbT_b, TcT_c, TdT_d의 날씬함은 각각 33, 22, 11이다. 다른 어떤 신장 트리의 날씬함도 11 이상임을 쉽게 알 수 있으므로, 그림 6(d)의 신장 트리 TdT_d는 날씬함이 11인 가장 날씬한 신장 트리 중 하나이다.

가장 작은 날씬함을 구하는 프로그램을 작성하라.

입력

입력은 여러 개의 데이터셋으로 이루어지며, 마지막에는 공백으로 구분된 두 개의 00이 있는 줄이 온다. 각 데이터셋의 형식은 다음과 같다.

n m
a1 b1 w1
...
am bm wm

데이터셋의 모든 입력 값은 음이 아닌 정수이며, 한 줄 안의 값들은 공백으로 구분된다.

nn은 정점의 수, mm은 간선의 수이다. 2≤n≤1002 \le n \le 100이고 0≤m≤n(n−1)/20 \le m \le n(n - 1)/2라고 가정해도 된다. aka_k와 bkb_k(k=1,…,mk = 1, \dots, m)는 nn 이하의 양의 정수로, kk번째 간선 eke_k가 잇는 두 정점 vakv_{a_k}와 vbkv_{b_k}를 나타낸다. wkw_k는 1000010000 이하의 양의 정수로, eke_k의 가중치를 뜻한다. 그래프 G=(V,E)G = (V, E)는 단순 그래프라고 가정한다. 즉 자기 자신을 잇는 간선(자기 루프)이나, 양 끝 정점이 서로 같은 두 개 이상의 간선(평행 간선)은 없다.

출력

각 데이터셋에 대해, 그래프에 신장 트리가 존재하면 그중 가장 작은 날씬함을 출력한다. 존재하지 않으면 −1-1을 출력한다. 출력에 그 밖의 문자가 포함되어서는 안 된다.

예제1

  1. 예제 1

    입력
    4 5
    1 2 3
    1 3 5
    1 4 6
    2 4 6
    3 4 7
    4 6
    1 2 10
    1 3 100
    1 4 90
    2 3 20
    2 4 80
    3 4 40
    2 1
    1 2 1
    3 0
    3 1
    1 2 1
    3 3
    1 2 2
    2 3 5
    1 3 6
    5 10
    1 2 110
    1 3 120
    1 4 130
    1 5 120
    2 3 110
    2 4 120
    2 5 130
    3 4 120
    3 5 110
    4 5 120
    5 10
    1 2 9384
    1 3 887
    1 4 2778
    1 5 6916
    2 3 7794
    2 4 8336
    2 5 5387
    3 4 493
    3 5 6650
    4 5 1422
    5 8
    1 2 1
    2 3 100
    3 4 100
    4 5 100
    1 5 50
    2 5 50
    3 5 50
    4 1 150
    0 0
    
    예상 출력
    1
    20
    0
    -1
    -1
    1
    0
    1686
    50