트리에 팔을 만들어주자.
트리의 팔을 다음과 같이 정의하자.
어떤 트리 T가 주어졌을 때, 해당 트리가 가질 수 있는 양팔을 (a,b)라고 했을 때, 양팔의 길이의 합이 W이상 V이하가 되는 순서쌍 (a,b)의 개수를 구하는 Q개의 쿼리를 처리해보자.
첫 번째 줄에 트리의 정점 개수 N, 루트 노드의 번호 R이 주어진다. (2≤N≤300 000;1≤R≤N)
두 번째 줄부터 N−1개의 줄에 걸쳐 연결된 두 정점 u,v가 공백으로 구분되어 주어진다. (1≤u,v≤N)
N+2 번째 줄에는 처리해야할 쿼리의 개수 Q가 주어진다. (1≤Q≤200 000)
N+3 번째 줄부터 한 줄에 쿼리가 하나씩 주어진다. 각 쿼리의 W,V가 공백으로 구분되어 들어오는 형태이다. (1≤W≤V≤N)
양팔의 길이 합이 W이상 V이하가 되는 순서쌍 (a,b)의 개수를 구해 1 000 000 007로 나눈 나머지를 쿼리별로 한 줄마다 출력한다.