고속도로
시간 제한3초메모리 제한128 MB
트리와 추가 간선(고속도로)들이 주어질 때, 각 질의 (x,y)마다 트리 경로와 x,y에서만 만나는 고속도로 하나를 쓰는 대체 경로의 수를 구한다.
문제
바이트랜드는 개의 도시가 개의 양방향 도로로 연결된 작은 나라입니다. 도로만 이용하면 임의의 두 도시 사이를 오가는 방법이 정확히 하나뿐이므로, 도로망은 트리를 이룹니다. 이렇게 경로가 하나뿐이라 교통 체증이 심해서 여러 개의 고속도로가 건설되었습니다. 각 고속도로는 어떤 두 도시를 직접 잇습니다.
경로란 도로와 고속도로를 이어 붙인 이동으로, 지나는 도시가 모두 서로 다른 단순 경로입니다. 임의의 두 도시 , 에 대해 고속도로를 전혀 쓰지 않는 경로는 정확히 하나 존재하며, 이를 와 사이의 주 경로라고 부릅니다. 주 경로는 도로망에서의 유일한 경로입니다.
도시 에서 도시 로 갈 때 사람들은 주 경로를 택하거나, 고속도로를 정확히 하나만 사용하는 대체 경로를 택할 수 있습니다. 대체 경로는 양 끝 도시 , 를 제외하고는 주 경로와 어떤 도시도 공유하지 않을 때에만 허용됩니다.
각 질의로 주어지는 도시 쌍에 대해, 두 도시 사이를 오갈 수 있는 경로의 개수(주 경로와 허용되는 모든 대체 경로의 합)를 구하세요.
입력
첫 번째 줄에 도시의 수 ()이 주어집니다. 도시는 번부터 번까지 번호가 매겨져 있습니다.
이어지는 개의 줄에는 각각 두 정수 , ()가 주어지며, 도시 와 가 도로로 연결되어 있음을 뜻합니다.
다음 줄에는 고속도로의 수 ()이 주어집니다. 이어지는 개의 줄에는 각각 고속도로가 잇는 두 도시가 주어집니다.
다음 줄에는 질의의 수 ()가 주어집니다. 이어지는 개의 줄에는 각각 두 정수 , 가 주어지며, 도시 와 사이의 이동을 묻는 질의입니다. 고속도로와 질의는 모두 도로와 같은 형식(두 정수)으로 주어집니다.
출력
정확히 개의 줄을 출력합니다. 번째 줄에는 번째 질의에 대한 경로의 개수를 하나의 정수로 출력합니다.