РСОП XXVIII 2016 6

H. Tree 28

Условие


Задача H. Дърво
---
Дадено е претеглено дърво с N, 2 ≤ N ≤ 150 001 върха, номерирани с числата от 0 до N - 1. Корена на дървото е връх с номер 0. Търси се разстоянието между двойки върхове.

Вход
---
За всеки тест на първия ред е зададен броя на върховете N. Следват N - 1 реда с по две числа. i-тия ред съдържа предшественика на връх с номер i и разстоянието между тях d, 0 ≤ d ≤ 100. Следва ред с броя на заявките Q, 0 ≤ Q ≤ N. На следващите Q реда ще има по две числа – номерата на върховете, разстоянието между които ни интересува. Края на входа е маркиран с 0.

Изход
---
За всеки тест програмата трябва да изведе Q числа, всяко на отделен ред на стандартния изход – разстоянието между съответните върхове. 

Примерен вход 
---
16
0 1
1 2
1 3
2 2
2 4
3 1
6 4
5 2
4 1
4 5
9 4
9 2
12 3
7 2
7 1
7
13 15
8 2
0 14
9 10
14 8
10 11
13 8
0

Примерен изход
---
19
6
11
6
18
10
14