트리와 쿼리

아직 제출이 없습니다시간 제한3초메모리 제한1024 MB

문제

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

NN개의 정점 중 몇 개를 골라, 그 고른 정점들을 S=s_1,s_2,,s_KS = \\{s\_1, s\_2, \dots , s\_K\\}라고 하자. 또한, s_i=vs\_i = v를 만족하는 ii (1iK1 ≤ i ≤ K)가 존재할 때, 정점 vvSS에 속한다고 부르자.

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

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

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

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

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

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

입력

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

다음 (N1N - 1)개의 줄에 각 간선에 대한 정보가 주어진다. 이 중 ii (1iN11 ≤ i ≤ N - 1)번째 줄에는 두 정수 A_iA\_i, B_iB\_i가 주어진다.

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

다음 QQ개의 줄에 각 질의에 대한 정보가 주어진다. 이 중 ii (1iQ1 ≤ i ≤ Q)번째 줄은 ii번째 질의를 나타내며, 정수 KKKK개의 정수 s_1,,s_Ks\_1, \dots , s\_K가 차례대로 주어진다.

출력

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

제한

  • 2N250,0002 ≤ N ≤ 250\\,000
  • 1Q100,0001 ≤ Q ≤ 100\\,000
  • 모든 ii (1iN11 ≤ i ≤ N - 1)에 대해, 1A_iN1 ≤ A\_i ≤ N.
  • 모든 ii (1iN11 ≤ i ≤ N - 1)에 대해, 1B_iN1 ≤ B\_i ≤ N.
  • 모든 ii (1iN11 ≤ i ≤ N - 1)에 대해, A_iB_iA\_i ≠ B\_i.
  • 주어지는 그래프는 트리이다.
  • 모든 질의에 대해, 1KN1 ≤ K ≤ N.
  • 각 질의에서, 모든 ii (1iK1 ≤ i ≤ K)에 대해, 1s_iN1 ≤ s\_i ≤ N.
  • 각 질의에서, 고른 KK개의 정점 s_1,,s_Ks\_1, \dots , s\_K는 서로 다르다.
  • QQ개의 질의에서 주어지는 KK들의 합은 1,000,0001\\,000\\,000 이하이다.