Развитие города | 프로그래밍의 벗 PivotOJ
PivotOJ

Развитие города

시간 제한: 3000ms메모리 제한: 512MB출처: ICPC 2021-2022 Northwestern Russia QualificationBOJ 24634
이 문제는 본문 이미지 일부가 표시되지 않습니다. 텍스트만으로 풀이가 어려울 수 있습니다.

문제

Город Байтсбург состоит из исторической части и новой части. Историческая часть Байтсбурга представляет собой дерево из nn площадей, соединённых n1n-1 проспектами. Площади занумерованы последовательными целыми числами от 1 до nn. Главная площадь города --- вершина 11 --- является корнем дерева.

Изначально город состоял только из исторической части. Каждый год город развивается следующим образом. Пусть в начале года в городе mm площадей. 

  • Выбирается какая-то площадь ff в исторической части и какая-то площадь tt среди уже построенных на данный момент (в исторической или в новой части).
  • Поддерево TT исторической части с корнем в вершине ff целиком копируется в новую часть, после чего корень скопированного поддерева соединяется проспектом с площадью tt. Все построенные объекты (площади и проспекты) относятся к новой части --- историческая часть города остаётся неизменной.
  • Пусть поддерево TT состоит из kk площадей. Тогда новые площади получают номера от m+1m+1 до m+km+k, при этом если в поддереве TT номер площади ii меньше номера площади jj, то номер площади ii', соответствующей площади ii, меньше номера площади jj', соответствующей площади jj.

[이미지 1]

Вам дана конфигурация исторической части города и данные о его развитии в течение yy лет. Ваша задача --- отвечать на запросы вида <<найти кратчайшее расстояние между двумя площадями>>.

입력

Первая строка входных данных содержит три целых числа nn, yy и qq --- число площадей в исторической части, число лет, в течение которых застраивалась новая часть, и число запросов соответственно (1n,y,q1051 \le n,y,q \le 10^5).

Каждая из последующих n1n-1 строк содержит по два целых числа aa и bb --- номера двух площадей в исторической части, соединённых очередным проспектом  (1a,bn1 \le a,b \le n; aba \ne b). Гарантируется, что конфигурация проспектов и площадей является деревом. Главная площадь, которая является корнем дерева, имеет номер 1.

Каждая из последующих yy строк содержит по два целых числа ff и tt --- номер исходной площади в исторической части и номер площади, к которой присоединяется копия (1fn1 \le f \le n; t1t \ge 1, tt не превосходит числа площадей на начало соответствующего года). 

Каждая из последующих qq строк содержит по два целых числа ii и jj --- номера площадей, расстояние между которыми требуется найти. Пусть MM --- общее число площадей по прошествии yy лет застройки новой части, тогда 1i,jM1 \le i,j \le M

출력

Для каждого запроса выведите одно целое число --- кратчайшее расстояние между соответствующими площадями.

예제

예제 1

입력
5 2 4
1 3
1 4
3 2
3 5
3 4
4 2
5 9
1 8
6 3
4 7
출력
3
3
4
1
코드를 제출하려면 로그인하세요.