맑고 차가운 물

면접 대비

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

요약
분기점 목록으로 주어진 뿌리 있는 이진 트리에서 각 파이프 끝점의 헛간까지 거리를 모두 출력한다.
난이도

보통10점 중 4점

유형
트리, BFS, 그래프, 구현
정답자
아직 제출이 없습니다

문제

위스콘신 낙농 지대의 덥고 습한 여름이면 젖소들이 갈증을 느끼기 때문에, 농부 John은 헛간에서 맑고 차가운 물을 퍼 올려 파이프 망으로 흘려보내 소들을 시원하게 해 준다. 파이프는 NN개(3≤N≤999993 \le N \le 99999, NN은 홀수)이며 1…N1 \dots N번으로 번호가 매겨져 있다. 물이 파이프를 따라 흐르는 동안 여름 열기에 데워지므로, Bessie는 가장 차가운 물을 찾기 위해 망의 모든 지점이 헛간에서 얼마나 떨어져 있는지 알고 싶어 한다.

파이프들은 헛간을 뿌리로 하는 이진 트리를 이룬다. 모든 분기점에서는 정확히 두 개의 파이프가 뻗어 나가고, 모든 파이프의 길이는 정확히 11이며, NN개의 파이프는 모두 이 하나의 트리로 연결되어 있다.

각 파이프의 끝점은 분기점이거나 열린 꼭지이며, 그 끝점은 해당 파이프의 번호로 식별된다. 11번 파이프는 헛간에 연결되어 있고, 그 끝점에서 헛간까지의 거리는 11이다.

지도에는 CC개(1≤C≤N1 \le C \le N)의 분기점이 나열된다. 각 분기점은 세 정수로 주어진다. 어떤 파이프의 끝점 EiE_i(1≤Ei≤N1 \le E_i \le N)와, 그 끝점에서 뻗어 나가는 두 파이프 B1iB1_i, B2iB2_i(2≤B1i≤N2 \le B1_i \le N, 2≤B2i≤N2 \le B2_i \le N)이다. 파이프가 분기하면 거리가 이어져, B1iB1_i와 B2iB2_i의 끝점은 EiE_i의 끝점보다 헛간에서 11만큼 더 멀다.

이 지도를 이용하여 모든 파이프의 끝점에서 헛간까지의 거리를 구하라.

입력

  • 첫째 줄: 두 정수 NN과 CC가 공백으로 구분되어 주어진다.
  • 둘째 줄부터 C+1C+1째 줄까지: i+1i+1째 줄은 하나의 분기점을 세 정수 EiE_i, B1iB1_i, B2iB2_i로 설명한다. 파이프 EiE_i의 끝점이 분기점이며, 그곳에서 파이프 B1iB1_i과 B2iB2_i이 뻗어 나간다.

출력

  • 첫째 줄부터 NN째 줄까지: ii째 줄에는 헛간에서 파이프 ii의 끝점까지의 거리를 나타내는 정수 하나를 출력한다.

힌트

첫 번째 예제는 다음 파이프 지도를 나타낸다.

+------+
| Barn |
+------+
   | 1
   *
2 / \ 3
     *
  4 / \ 5

11번 파이프는 항상 헛간에서 거리가 11이다. 22번과 33번 파이프는 11번 파이프의 끝점에서 분기하므로 거리가 22이다. 44번과 55번 파이프는 33번 파이프의 끝점에서 분기하므로 거리가 33이다.

예제3

  1. 예제 1

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

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

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