만드는 중입니다

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

트리와 쿼리 14

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

요약
간선 가중치가 모두 1인 트리에서 각 질의는 k개의 정점 v_i와 반경 r_i 중 k-1개 이상을 만족하는 정점의 개수를 구합니다.
난이도

어려움10점 중 8점

유형
트리, 분할 정복
정답자
아직 제출이 없습니다

문제

N개의 정점으로 이루어진 트리가 있다. 정점은 1번부터 N번까지 번호가 매겨져 있다. 간선의 가중치는 모두 1이다.

아래의 쿼리를 수행하는 프로그램을 작성하시오.

  • k v1 r1 v2 r2 ... vk rk: 어떤 정점 xx가 viv_i와 거리 rir_i 이내에 있으면, xx가 ii번 조건을 만족한다고 한다. 트리의 모든 정점 중에서 쿼리로 주어진 kk개의 조건 가운데 k−1k-1개 이상을 만족하는 정점의 개수를 출력하라.

입력

첫 번째 줄에 정수 NN이 주어진다. (1≤N≤100,0001 \le N \le 100{,}000)

이후 N−1N-1개의 줄에는 간선이 연결하는 두 정점 번호 uu, vv가 주어진다. (1≤u,v≤N1 \le u, v \le N)

다음 줄에 정수 MM이 주어진다. (1≤M≤300,0001 \le M \le 300{,}000)

쿼리는 한 줄이 아니라 k+1k+1개의 줄에 걸쳐 주어진다. 이런 형식의 쿼리 MM개가 이어서 주어진다. (1≤vi≤N1 \le v_i \le N, 0≤ri<N0 \le r_i < N, 1≤k1 \le k)

쿼리로 주어지는 kk의 합은 300000300000을 넘지 않는다.

출력

쿼리의 결과를 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

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