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

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

소들의 정치

면접 대비

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

요약
트리의 각 노드가 K개 정당 중 하나에 속할 때, 각 정당에 속한 노드들 사이의 최대 거리인 지름을 구한다.
난이도

보통10점 중 7점

유형
트리, DFS, 분할 정복, 동적 계획법
정답자
아직 제출이 없습니다

문제

농부 존의 소들은 1…N1 \dots N번으로 번호가 매겨진 NN개의 목초지(2≤N≤200,0002 \le N \le 200{,}000)에서 산다. 길이가 모두 11인 양방향 길이 정확히 N−1N - 1개 있어서, 어떤 목초지에서 출발하든 다른 모든 목초지에 도달할 수 있다. 즉, 목초지와 길은 하나의 트리를 이룬다.

각 목초지 ii는 부모 PiP_i(0≤Pi≤N0 \le P_i \le N)로 주어진다. 루트 목초지는 Pi=0P_i = 0이며, 부모가 없다는 뜻이다.

소들은 1…K1 \dots K번으로 번호가 매겨진 KK개의 정당(1≤K≤N/21 \le K \le N/2)을 만들었다. 모든 소는 정확히 하나의 정당에 속하며, 소 ii는 정당 AiA_i(1≤Ai≤K1 \le A_i \le K)에 속한다. 각 정당에는 소가 최소 두 마리 있다.

정당의 범위란 그 정당에 속한 두 소 사이의 최대 거리이다. 두 소 사이의 거리는 두 소가 있는 목초지를 잇는 경로에 포함된 길의 개수이다.

예를 들어 정당 1이 소 1, 3, 6으로, 정당 2가 소 2, 4, 5로 이루어져 있고, 목초지가 아래처럼 연결되어 있다고 하자(정당 1에 속한 소는 양옆에 -가 붙어 있다).

  -3-
   |
  -1-
 / | \
2  4  5
      |
     -6-

정당 1에 속한 두 소 사이의 최대 거리는 3이고(소 3과 소 6 사이), 정당 2의 최대 거리는 2이다(예: 소 2와 소 4 사이). 따라서 정당 1의 범위는 3, 정당 2의 범위는 2이다.

각 정당의 범위를 구하라.

입력

  • 첫째 줄: 공백으로 구분된 두 정수 NN과 KK.
  • 2…N+12 \dots N+1번째 줄: i+1i + 1번째 줄에는 목초지 ii를 나타내는, 공백으로 구분된 두 정수 AiA_i와 PiP_i가 주어진다.

출력

  • 1…K1 \dots K번째 줄: ii번째 줄에 정당 ii의 범위를 나타내는 정수 하나를 출력한다.

예제2

  1. 예제 1

    입력
    6 2
    1 3
    2 1
    1 0
    2 1
    2 1
    1 5
    
    예상 출력
    3
    2
    
  2. 예제 2

    입력
    2 1
    1 0
    1 1
    
    예상 출력
    1