PivotOJ

트리와 쿼리

시간 제한: 3000ms메모리 제한: 1024MB출처: KOI 2022 2차BOJ 25402

문제

11부터 NN까지 NN개의 정점으로 이루어진 트리가 있다. ii번째 간선은 서로 다른 두 정점 AiA_i, BiB_i를 잇는다. (1 ≤ i ≤ N - 1)

NN개의 정점 중 몇 개를 골라, 그 고른 정점들을 S={s1,s2,,sK}S = \{s_1, s_2, \dots , s_K\}라고 하자. 또한, si=vs_i = v를 만족하는 ii (1 ≤ i ≤ K)가 존재할 때, 정점 vvSS에 속한다고 부르자.

SS에 속하는 서로 다른 두 정점 uu, vv에 대하여, SS에 속하는 정점만을 이용하여 트리 위에서 uu, vv 사이를 오갈 수 있다면, “uuvvSS 위에서 연결되어 있다”고 하자.

예를 들어, 아래와 같은 트리를 생각하자. (N=7N = 7)

만일, K=6K = 6, S={1,2,3,4,5,6}S = \{1, 2, 3, 4, 5, 6\}라면, “1122”, “3355”, “4466”은 각각 서로 SS 위에서 연결되어 있다. 그러나, “1166”, “2277”은 각각 서로 SS 위에서 연결되어 있지 않다.

다음 조건을 모두 만족하는 정점쌍 (u,v)(u, v)의 개수를 SS의 연결 강도라고 하자.

  1. uuvv는 서로 다른 두 정점.
  2. 1 &le; u < v &le; N.
  3. uuvvSS 위에서 연결되어 있다.

고른 정점들 SS가 주어질 때, SS의 연결 강도를 계산하는 프로그램을 작성하라. 여러분은 이러한 질의 QQ개에 대하여 모두 답해야 한다.

입력

첫 번째 줄에 정수 NN이 주어진다.

다음 (N1N - 1)개의 줄에 각 간선에 대한 정보가 주어진다. 이 중 ii (1 &le; i &le; N - 1)번째 줄에는 두 정수 AiA_i, BiB_i가 주어진다.

다음 줄에 정수 QQ가 주어진다.

다음 QQ개의 줄에 각 질의에 대한 정보가 주어진다. 이 중 ii (1 &le; i &le; Q)번째 줄은 ii번째 질의를 나타내며, 정수 KKKK개의 정수 s1,,sKs_1, \dots , s_K가 차례대로 주어진다.

출력

첫 번째 줄부터 QQ개의 줄에 걸쳐, 각 질의에 대한 답을 출력한다. 이 중 ii (1 &le; i &le; Q)번째 줄에는 ii번째 질의에서 주어진 SS에 대하여, SS의 연결 강도를 출력한다.

예제

예제 1

입력
7
1 2
1 3
1 5
2 7
4 6
4 7
6
1 1
2 1 2
4 1 2 3 4
5 1 2 4 6 7
6 1 2 3 4 5 6
7 1 2 3 4 5 6 7
출력
0
1
3
10
7
21
코드를 제출하려면 로그인하세요.