만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Cijepise

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

요약
루트가 비워질 때마다 가장 나이 많은 자식을 따라 사람들이 이동하는 트리에서, 각 질문 노드가 가장 빨리 확실히 초대되도록 바꿔야 하는 나이 수의 최솟값을 구합니다.
난이도

보통10점 중 7점

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

문제

Portal cijepise.zdravlje.hr은 크로아티아 공화국 주민이 COVID-19 백신 접종을 신청할 수 있게 한 기술 프로젝트다. 포털을 만드는 데 400만 쿠나를 조금 넘게 썼다. 주된 이유는 최고 수준의 알고리즘 전문가 팀이 이 개발에 참여했기 때문이다.

꼬마 Ante는 프로그래밍과 코코넛 아이스크림, 그리고 방역 수칙을 좋아한다. 당연히 그는 포털로 가까운 친구 QQ명을 바로 접종 신청했다. 날짜도 정확히 기억한다. 3월 1일이었고, 그때 그는 지역 정보올림피아드를 준비하고 있었다. 그 사이 전국 대회가 열렸고, 크로아티아 로고 올림피아드도 열렸으며, Chelsea는 챔피언스리그 결승에 올랐다. 하지만 Ante의 친구 중 접종 호출을 받은 사람은 없었다.

Ante는 직접 나서기로 했다. 메시지를 보내고, 고객센터에 전화하고, 네트워크 트래픽을 가로채고, 컴파일과 디컴파일을 했다. 몇 시간 뒤 그는 포털이 돌아가는 원리를 알아냈고, 모든 사용자의 데이터에 접근하게 되었다. 이제 그에게는 진짜 알고리즘 전문가의 도움이 필요하다.

사용자는 내부적으로 트리 구조에 저장되어 있다. NN명의 사용자는 각각 (N−1)(N - 1)개의 간선을 가진 단순 연결 그래프의 NN개 노드 중 하나에 대응한다. 노드에는 11부터 NN까지의 자연수가 번호로 붙어 있고, 노드 11이 루트다. 접종 호출은 루트에 있는 사용자에게 초대장을 보내며 시작한다. 그 사용자는 시스템에서 삭제되고, 루트는 비게 된다. 이후 정확히 24시간 동안 복잡한 노드 이동 절차가 진행되며, 끝나면 다음으로 호출될 사용자가 루트에 나타난다.

노드 이동 절차는 먼저 루트와 나이가 가장 많은 자식을 서로 바꾼다. 이제 루트에는 어떤 사용자가 있고, 그 자식 중 하나가 빈 상태가 된다. 그다음 절차는 빈 자식과 그 자식의 가장 나이 많은 자식을 바꾸고, 이를 리프 중 하나가 빈 상태가 될 때까지 반복한다. 그러면 그 리프가 트리에서 삭제된다. 어느 단계에서든 한 노드가 가장 큰 나이를 가진 자식을 여럿 가지고 있다면, 알고리즘은 그중 가장 나이 많은 자식을 무작위로 고른다.

노드 이동 절차의 예시다(값은 사용자의 나이).

QQ명의 친구 각각에 대해, Ante는 그 친구가 가장 적은 날수 안에 확실하게 호출되도록 나이를 바꿔야 하는 사용자 수의 최솟값을 알고 싶어 한다. Ante는 사용자의 나이를 2⋅1092 \cdot 10^9 이하의 음이 아닌 정수 중 아무 값으로나 바꿀 수 있다.

입력

첫 줄에 문제에 나온 자연수 NN이 주어진다.

둘째 줄에 NN개의 정수 xix_i(1≤xi≤1091 \le x_i \le 10^9)가 주어진다. xix_i는 노드 ii에 있는 사용자의 나이다.

이어지는 N−1N - 1개의 줄에는 자연수 aia_i와 bib_i(1≤ai,bi≤N1 \le a_i, b_i \le N)가 주어지며, 노드 aia_i와 bib_i 사이에 간선이 있음을 뜻한다.

다음 줄에 문제에 나온 자연수 QQ가 주어진다.

이어지는 QQ개의 줄에는 자연수 qiq_i(1≤qi≤N1 \le q_i \le N)가 주어지며, ii번째 친구가 있는 노드 번호를 뜻한다.

출력

QQ명의 친구 각각에 대해, ii번째 친구가 가장 적은 날수 안에 호출되도록 Ante가 나이를 바꿔야 하는 사용자 수의 최솟값을 한 줄에 하나씩 출력한다.

예제3

  1. 예제 1

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

    입력
    7
    45 13 19 3 81 27 77
    1 2
    1 3
    1 4
    3 5
    3 6
    4 7
    3
    5
    6
    7
    
    예상 출력
    0
    1
    1
    
  3. 예제 3

    입력
    8
    23 4 9 7 11 4 1 18
    2 1
    3 2
    4 2
    5 2
    6 3
    7 4
    8 1
    3
    2
    3
    7
    
    예상 출력
    1
    2
    3