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