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

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

동적 센트로이드

시간 제한1.5초메모리 제한512 MB

요약
정점 1부터 k까지로 이루어진 부분 트리마다, 그 정점을 제거했을 때 남는 각 성분 크기가 k/2 이하가 되는 가장 작은 중심점을 구해 출력한다.
난이도

어려움10점 중 8점

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

문제

크기 NN의 트리에서, 센트로이드란 정점을 기준으로 나누어지는 서브트리의 크기가 모두 N/2N/2 이하인 정점을 뜻한다. 어떠한 트리라도 센트로이드가 존재함이 알려져있다.

1번 정점이 트리의 루트이며, ii번 정점의 부모는 pip_i이고, pi<ip_i < i이다.

11부터 NN까지의 kk에 대해, 1번 정점부터 kk번 정점까지만 사용한 트리의 센트로이드를 구하여라.

입력

첫 줄에 NN이 주어진다. (2≤N≤5×1052 \le N \le 5 \times 10^5)

둘째 줄에 i=2i = 2부터 i=Ni = N까지, pip_i가 공백으로 구분되어 주어진다. (1≤pi<i1 \le p_i < i)

출력

11부터 NN까지의 kk에 대해, 1번 정점부터 kk번 정점까지만 사용한 트리의 센트로이드의 번호를 공백으로 구분하여 순서대로 출력한다. 여러가지의 답이 존재한다면 그 중 가장 작은 것을 출력한다.

예제2

  1. 예제 1

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

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