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

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

적대적 인수 이후의 회사 생활

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

요약
같은 n명의 직원에 대한 두 개의 루트 트리가 주어질 때, 각 직원마다 두 트리 모두에서 자신의 후손인 사람 수를 센다.
난이도

어려움10점 중 8점

유형
트리, DFS, 누적 합, 정렬
정답자
아직 제출이 없습니다

문제

JanuszPol은 오랜 전통이 있는 폴란드 기업이다. 그런데 최근 자금 사정이 크게 나빠져 결국 외국 경쟁사에 인수되었다. 새 이사회는 회사 조직을 처음부터 다시 짜기로 했다. 지금까지 조직은 전형적인 트리 구조였다.

  • 상사가 없는 대표이사가 정확히 한 명 있다.
  • 나머지 직원은 모두 직속 상사가 정확히 한 명이고, 순환하는 관계는 없다.

트리에서 직원 xx 아래에 있는 직원 yy를 xx의 부하라고 한다. 즉 yy에서 직속 상사를 따라 계속 올라가면 xx에 도달하는 경우다.

인수 이후에도 회사는 같은 사람을 그대로 고용하고 조직도 트리로 유지하지만, 모든 직원이 다른 자리를 받기 때문에 트리 모양은 완전히 달라질 수 있다. 다만 대표이사는 자리를 그대로 지킨다. 지금은 아무도 남에게 지시를 내리려 하지 않는다. 당장 내일이라도 부하가 상사가 될 수 있기 때문이다.

인수 전과 인수 후의 트리가 주어진다. 각 직원 xx마다 인수 전에도 xx의 부하였고 인수 후에도 xx의 부하로 남는 사람이 몇 명인지 구하여라.

입력

첫째 줄에 직원 수 nn (2≤n≤200 0002 \leq n \leq 200\,000)이 주어진다. 직원의 번호는 11번부터 nn번까지이고, 11번이 대표이사다. 둘째 줄에는 인수 전 조직 구조를 나타내는 n−1n-1개의 수 a2,a3,…,ana_2, a_3, \ldots, a_n이 주어진다. aia_i는 ii번 직원의 상사 번호다. 셋째 줄에도 n−1n-1개의 수 b2,b3,…,bnb_2, b_3, \ldots, b_n이 주어지며, bib_i는 인수 후 ii번 직원의 상사 번호다. 두 구조 모두 11번을 루트로 하는 올바른 트리를 이룬다.

출력

한 줄에 nn개의 수를 공백으로 구분해 출력한다. ii번째 수는 두 트리에서 동시에 ii번 직원의 부하인 사람의 수다.

예제2

  1. 예제 1

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

    입력
    2
    1
    1
    
    예상 출력
    1 0