만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

도시 지리

면접 대비

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

요약
모든 구역이 연결되도록 도로를 골라, 남긴 도로 중 가장 비싼 도로와 가장 싼 도로의 가격 차이를 최소로 만드는 문제입니다. 남길 도로의 번호를 출력합니다.
난이도

보통10점 중 5점

유형
투 포인터, 유니온 파인드, 정렬, 그래프
정답자
아직 제출이 없습니다

문제

안드로이드 바샤는 도시 지리 프로젝트를 준비하고 있다. 이 프로젝트의 목표는 그가 사는 도시의 기반 시설을 개선하는 것이다.

현재 도시는 nn개의 구역으로 이루어져 있고, 일부 구역은 도로로 연결되어 있다. 이 도로들을 이용하면 도시의 어느 구역에서든 다른 어느 구역으로 자동차를 타고 갈 수 있다. 바샤는 도로가 너무 많아서 시민들이 걷거나 자전거를 타는 대신 자가용을 쓴다고 생각한다. 그래서 자동차용 도로를 가능한 한 많이 막고 그 자리를 대로(boulevard)로 바꾸려 한다. 물론 도로만으로 어느 구역에서든 다른 어느 구역까지 자동차로 갈 수 있는 상태는 유지하고 싶어 한다.

시민들은 도로를 이용할 때 요금을 내며, 도로마다 요금 차이가 클 수 있다. 비싼 도로와 싼 도로를 동시에 열어 두면 도시의 사회적 긴장이 커질 수 있다. 그래서 바샤는 열어 둘 도로 중 가장 비싼 도로와 가장 싼 도로의 요금 차이를 최소로 만들고 싶어 한다. 바샤가 열어 둘 도로를 고르도록 도와라.

입력

첫 줄에 도시의 구역 수 nn과 도로 수 mm이 차례로 주어진다 (2≤n≤30 0002 \leq n \leq 30\,000; n−1≤m≤30 000n - 1 \leq m \leq 30\,000). 이어지는 mm개의 줄에는 정수 세 개 aia_i, bib_i, cic_i가 주어진다. 이는 구역 aia_i와 구역 bib_i 사이에 요금이 cic_i인 도로가 있다는 뜻이다 (1≤ai,bi≤n1 \leq a_i, b_i \leq n; ai≠bia_i \neq b_i; 1≤ci≤1091 \leq c_i \leq 10^9). 두 구역 사이에 도로가 여러 개 있을 수 있다.

출력

한 줄에 열어 둘 도로의 번호를 출력한다. 도로 번호는 입력에 나타난 순서를 따른다. 답이 여러 개이면 그중 아무 답이나 출력해도 된다.

예제2

  1. 예제 1

    입력
    3 3
    1 2 1
    2 3 3
    3 1 4
    
    예상 출력
    2 3
    
  2. 예제 2

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