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

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

검은 돌

시간 제한1초메모리 제한512 MB

요약
일부 정점이 검은색으로 표시된 트리에서, 정점 i개와 검은 정점 j개를 갖는 부분 트리가 존재하는 질의 (i, j)의 개수를 센다.
난이도

어려움10점 중 8점

유형
트리, 동적 계획법, DFS, 완전 탐색
정답자
아직 제출이 없습니다

문제

정점 집합 V(≠∅)V(\neq \emptyset)와 간선 집합 EE를 가진 그래프 T=(V,E)T = (V, E)가 트리라 함은, TT의 임의의 두 정점 uu와 vv 사이에 항상 경로가 존재하고 그 경로가 하나뿐인 경우이다.

트리 T=(V,E)T = (V, E) 안의 서브트리 S=(V′,E′)S = (V', E')란, V′⊆VV' \subseteq V, E′⊆EE' \subseteq E이면서 트리의 성질을 만족하는, 그 자체로 트리인 그래프이다.

트리 TT의 어떤 정점들에는 검은 돌이 놓여 있다. 검은 돌은 한 정점에 많아야 하나씩만 놓일 수 있다.

우리는 다음과 같은 질의 q=(i,j)q = (i, j)를 던질 것이고, 여러분은 이 질의에 답해야 한다.

  • 트리 TT 안에 정확히 ii개의 정점을 가지고, 이 중 jj개의 정점에 검은 돌이 놓여 있는 서브트리 SS가 존재하는가?

예를 들어, 아래 <그림 1>에서 9개 정점을 가진 트리가 주어진다. 여기서 질의 q=(5,3)q = (5, 3)에 대해서는 정점 1, 2, 3, 4, 6으로 이루어진 서브트리가 조건을 만족한다. 하지만 질의 q2=(4,3)q_2 = (4, 3)에 대해서는 조건을 만족하는 서브트리가 존재하지 않는다.

<그림 1>

NN개의 정점을 가진 트리와 QQ개의 질의 qq가 주어질 때, 각 질의에 대한 답 중에서 '존재한다'는 답의 총 개수를 출력하시오.

입력

입력의 첫 줄에는 트리 TT의 정점 개수를 나타내는 정수 N(1≤N≤5,000)N(1 \le N \le 5,000)과 정점들에 놓여 있는 검은 돌의 개수 B(0≤B≤N)B(0 \le B \le N)가 주어진다. 트리 TT의 정점은 1부터 NN까지 정수로 나타낸다. 두 번째 줄에는 검은 돌이 놓여 있는 정점을 나타내는 BB개의 정수 x(1≤x≤N)x(1 \le x \le N)가 주어진다. 이어지는 N−1N-1개 줄 각각에는 TT에서 간선이 존재하는 두 정점을 나타내는 정수 u,v(1≤u,v≤N)u, v(1 \le u, v \le N)가 주어진다. 다음 줄에는 질의의 개수 Q(1≤Q≤1,000,000)Q(1 \le Q \le 1,000,000)가 주어지고, 이어지는 QQ개 줄 각각에 하나의 질의 q=(i,j)q = (i, j)를 나타내는 두 정수 i,j(1≤i≤N,0≤j≤min⁡(i,B))i, j(1 \le i \le N, 0 \le j \le \min(i, B))가 주어진다.

출력

각 질의에 대한 답 중에서 '존재한다'는 답의 총 개수를 출력한다.

예제2

  1. 예제 1

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

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