만드는 중입니다

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

잠자리

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

요약
각 잠자리가 트리에서 1번 연못부터 집 연못까지의 경로를 따라 날며 먹는 벌레의 서로 다른 종 수를 구합니다.
난이도

어려움10점 중 8점

유형
트리, DFS, 해시맵
정답자
아직 제출이 없습니다

문제

잠자리는 보타닉 가든과 비산공원 주변의 연못에서 볼 수 있다. 숲이 빽빽한 지역에서 토끼 벤슨은 잠자리가 날아다니는 연못 nn개를 기록했다. 연못 ii (1≤i≤n1 ≤ i ≤ n)에는 잠자리가 먹을 수 있는 벌레 bib_i마리가 있다. 연못 ii의 벌레는 종 sis_i에 속한다.

벤슨은 길 n−1n-1개도 기록했다. 길 jj (1≤j<n1 ≤ j < n)는 서로 다른 연못 uju_j와 vjv_j를 양방향으로 잇는다. 잠자리는 길만 이용해 어떤 연못에서든 다른 모든 연못으로 갈 수 있다.

벤슨은 잠자리 dd마리를 잡았고, 연못 11에서 한 마리씩 풀어 주려 한다. 잠자리 kk (1≤k≤d1 ≤ k ≤ d)의 집은 연못 hk≠1h_k \ne 1이며, 같은 연못을 두 번 방문하지 않고 길만 이용해 hkh_k까지 이동한다. 잠자리는 1번부터 dd번까지 순서대로 풀려난다. 풀려난 잠자리는 방문하는 모든 연못(연못 1 포함)에서 벌레를 한 마리씩 먹는다. 벌레가 남아 있는 연못은 벌레 수가 1 줄고, 0인 연못은 그대로 둔다.

벤슨을 도와 각 잠자리가 여행 중에 먹은 벌레의 서로 다른 종 수를 구하라.

입력

첫 줄에는 공백으로 구분된 정수 nn과 dd가 주어진다. 다음 줄에는 공백으로 구분된 정수 b1,b2,⋯ ,bnb_1, b_2, \cdots, b_n이 주어진다. 다음 줄에는 s1,s2,⋯ ,sns_1, s_2, \cdots, s_n이, 그다음 줄에는 h1,h2,⋯ ,hdh_1, h_2, \cdots, h_d가 주어진다. 다음 n−1n-1개 줄의 ii번째 줄에는 정수 uiu_i와 viv_i가 주어진다.

출력

공백으로 구분된 정수 dd개를 한 줄에 출력한다. kk번째 정수는 잠자리 kk가 먹은 벌레의 서로 다른 종 수이다.

제한

  • 2≤n≤2⋅1052 ≤ n ≤ 2 \cdot 10^5
  • 1≤d≤2⋅1061 ≤ d ≤ 2 \cdot 10^6
  • 1≤si≤n1 ≤ s_i ≤ n (모든 1≤i≤n1 ≤ i ≤ n에 대해)
  • 0≤bi≤d0 ≤ b_i ≤ d (각 1≤i≤n1 ≤ i ≤ n에 대해)
  • 1≤uj,vj≤n1 ≤ u_j, v_j ≤ n, uj≠vju_j \ne v_j (각 1≤j≤n−11 ≤ j ≤ n-1에 대해)
  • 2≤hk≤n2 ≤ h_k ≤ n (각 1≤k≤n1 ≤ k ≤ n에 대해)

예제2

  1. 예제 1

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

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