트리와 쿼리
시간 제한3초메모리 제한1024 MB
트리와 여러 개의 정점 집합 S가 주어질 때, 경로 위의 정점이 모두 S에 속하는 정점 쌍의 개수를 구합니다.
문제
정점이 부터 까지 개인 트리가 주어진다. 번째 간선은 서로 다른 두 정점 , 를 잇는다. ()
개의 정점 중 몇 개를 골라, 고른 정점들의 집합을 라고 하자. 를 만족하는 ()가 있으면, 정점 가 에 속한다고 한다.
에 속하는 서로 다른 두 정점 , 에 대하여, 에 속한 정점만 지나서 트리 위에서 와 사이를 오갈 수 있으면, "와 는 위에서 연결되어 있다"고 한다.
예를 들어, 아래와 같은 트리를 보자. ()

이고 이면, "과 ", "과 ", "와 "은 각각 위에서 연결되어 있다. 그러나 "과 ", "와 "은 위에서 연결되어 있지 않다.
다음 조건을 모두 만족하는 정점 쌍 의 개수를 의 연결 강도라고 한다.
- 와 는 서로 다른 두 정점이다.
- 이다.
- 와 는 위에서 연결되어 있다.
고른 정점 집합 가 주어질 때, 의 연결 강도를 계산하는 프로그램을 작성하라. 이러한 질의 개에 모두 답해야 한다.
입력
첫 번째 줄에 정수 이 주어진다.
다음 개의 줄에 각 간선의 정보가 주어진다. 번째 줄에는 두 정수 , 가 주어진다.
다음 줄에 정수 가 주어진다.
다음 개의 줄에 각 질의가 주어진다. 각 줄은 정수 와 이어서 개의 정수 로 이루어진다.
출력
개의 줄에 걸쳐 각 질의의 답을 순서대로 출력한다. 번째 줄에는 번째 질의에서 주어진 의 연결 강도를 출력한다.
제한
- 모든 ()에 대해, .
- 모든 ()에 대해, .
- 모든 ()에 대해, .
- 주어지는 그래프는 트리이다.
- 모든 질의에 대해, .
- 각 질의에서 모든 ()에 대해, .
- 각 질의에서 고른 개의 정점 는 서로 다르다.
- 개의 질의에서 주어지는 의 합은 이하이다.