트트리리와 쿼리
시간 제한2초메모리 제한1024 MB
원래 트리의 각 간선 양 끝에 트리 T의 사본을 붙여 만든 트리에서 두 정점 사이의 거리를 구하는 쿼리를 처리한다.
문제
정점이 개이고 무방향 간선으로 이루어진 트리 가 주어진다. 이때 는 트리 에서 번째 간선이 번 정점과 번 정점을 잇고 있다는 뜻이다.
다음은 트리 를 가지고 트트리리 를 정의한 것이다.
-
트리 와 동일한 개의 트리 , , , , 가 있다.
-
정수쌍 가 개가 있다. 이때 , 는 트리 에 속한 서로 다른 두 정점이다.
-
트리 에서 를 제거한 후 아래 과정을 진행한다.
- 트리 의 번 정점과 트리 의 번 정점을 잇는 간선을 추가한다.
- 트리 의 번 정점과 트리 의 번 정점을 잇는 간선을 추가한다.
- 트리 의 모든 정점의 번호에 를 더한다.
위 과정을 모두 진행한 후 만들어진 트리를 트트리리 라 정의한다. 트트리리 에 대해 다음 쿼리를 처리하는 프로그램을 작성하시오.
- : 정점 에서 정점 까지의 거리를 출력한다.
입력
첫 번째 줄에 과 가 공백으로 구분되어 주어진다.
그다음 줄부터 개의 줄에 걸쳐 트리 의 간선 정보가 주어진다. 그중 번째 줄은 에 대한 정보이며 과 가 공백으로 구분되어 주어진다.
그다음 줄부터 개의 줄에 걸쳐 정수쌍의 정보가 주어진다. 그중 번째 줄은 에 대한 정보이며 과 가 공백으로 구분되어 주어진다.
그다음 줄부터 개의 줄에 걸쳐 쿼리가 주어진다.
출력
각각의 쿼리의 결과를 순서대로 한 줄에 하나씩 출력한다.