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

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

동등한 파이프라인

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

요약
n개 정점 위의 가중치 있는 스패닝 트리 d개가 주어지고, 모든 정점 쌍 사이 경로의 최소 간선 가중치가 같으면 두 트리를 동등하다고 할 때, 각 트리를 가장 앞선 동등한 트리와 묶는다.
난이도

어려움10점 중 8점

유형
유니온 파인드, 정렬, 트리, 해시맵
정답자
아직 제출이 없습니다

문제

KAIST의 nn개 건물을 잇는 상수도관 네트워크를 건설하려고 한다. 예산 문제로 관은 n−1n-1개만 사용할 수 있다. 각 관은 무향이며 서로 다른 두 건물을 잇고, nn개 건물 모두가 관을 따라 서로 연결되어 있어야 한다. 이 관들이 네트워크를 이룬다.

신중한 계획자로서 당신은 dd개의 서로 다른 네트워크를 설계했고, 이들을 비교하려 한다. 네트워크의 각 관은 하나의 양의 정수인 내구도로 나타낼 수 있다. 네트워크 TT가 주어졌을 때, 서로 다른 두 건물 ii와 jj의 취약도 vT(i,j)v_{T}(i, j)를 ii와 jj를 분리하게 만드는 관의 최소 내구도로 정의한다. 다시 말해 vT(i,j)v_{T}(i, j)는 ii에서 jj로 가는 경로 위의 모든 관 가운데 최소 내구도이다.

두 네트워크 T1T_{1}과 T2T_{2}가 모든 1≤i<j≤n1 \le i < j \le n에 대해 vT1(i,j)=vT2(i,j)v_{T_1}(i, j) = v_{T_2}(i, j)를 만족하면 T1T_{1}과 T2T_{2}가 동등하다고 한다. 불필요한 계획을 걸러내기 위해, dd개의 설계를 동등성을 기준으로 묶으려 한다.

입력

첫째 줄에 두 정수 dd와 nn이 공백으로 구분되어 주어진다. (d≥1d \ge 1, n≥2n \ge 2, d⋅n≤500 000d\cdot n \le 500\,000)

둘째 줄부터 dd개 설계의 설명이 주어진다. 각 설계는 n−1n-1개 줄로 주어지며, 각 줄은 세 정수 aa, bb, cc로 이루어진다. (1≤a,b≤n1 \le a, b \le n, a≠ba \neq b, 1≤c≤1091 \le c \le 10^{9}) 이는 건물 aa와 bb를 직접 잇는 관이 있고 그 내구도가 cc임을 뜻한다.

출력

dd개의 정수를 한 줄에 출력한다. 1≤i≤d1 \le i \le d에 대해 ii번째 수는 입력의 ii번째 네트워크와 동등한 네트워크 중 가장 작은 번호 jj여야 한다.

예제2

  1. 예제 1

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

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