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

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

트리의 MEX

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

요약
각 정점에 대해 그 정점을 루트로 하는 서브트리에 적힌 값들의 mex를 구한다.
난이도

보통10점 중 6점

유형
트리, DFS, 세그먼트 트리, 구현
정답자
아직 제출이 없습니다

문제

NN개의 정점으로 구성된 루트 있는 트리가 있다. 각 정점은 11번부터 NN번까지 번호가 매겨져 있고, 각 정점에는 00 이상 NN 미만의 정수 값이 적혀 있다.

주어진 트리에서 모든 정점에 대해 mex(i)mex(i)를 구해야 한다. mex(i)mex(i)는 ii번 정점을 루트로 하는 서브 트리의 정점에 적혀 있지 않은 수 중에서 가장 작은 음이 아닌 정수이다.

11이상 NN이하의 모든 정수 ii에 대해 mex(i)mex(i)를 출력하여라.

입력

첫째 줄에 정점의 수 NN이 주어진다. (1≤N≤200,000)(1 \leq N \leq 200\\,000)

둘째 줄에 11번 정점부터 NN번 정점까지 각 정점의 부모 정점의 번호 p_ip\_i가 주어진다. 만약 부모 정점이 없다면 대신 −1-1이 주어진다. 입력으로 주어지는 그래프는 트리임이 보장된다.

셋째 줄에 11번 정점부터 NN번 정점까지 각 정점에 적힌 값 v_iv\_i가 주어진다. (0≤v_i<N)(0 \leq v\_i < N)

출력

NN개의 줄에 걸처 각 정점의 mex(i)mex(i)를 출력한다. ii번째 줄에는 mex(i)mex(i)를 출력한다.

예제1

  1. 예제 1

    입력
    9
    -1 1 6 9 2 1 9 9 6
    3 1 2 4 0 2 1 0 0
    
    예상 출력
    5
    2
    0
    0
    1
    3
    0
    1
    2