EduBrick

K. Различные значения на пути

3500 мс · 256 МБ · всё или ничего

В вершинах дерева записаны числа. Для каждого запроса (u,v)(u, v) нужно сказать, сколько различных значений встречается в вершинах пути из uu в vv, включая концы.

Формат ввода

В первой строке nn (1≤n≤1051 \le n \le 10^5) — число вершин, пронумерованных от 00 до n−1n-1; корень — вершина 00. Во второй строке nn чисел — значения в вершинах (1≤vali≤1091 \le val_i \le 10^9). В третьей строке n−1n-1 чисел: ii-е из них — родитель вершины ii (родитель имеет меньший номер).

В четвёртой строке qq (1≤q≤1051 \le q \le 10^5). В следующих qq строках по два числа uu и vv.

Формат вывода

Для каждого запроса выведите количество различных значений на пути.

Примеры

ввод
5
7 7 3 3 9
0 0 1 1
4
2 3
0 4
3 4
2 2
вывод
2
2
3
1
ввод
1
5

2
0 0
0 0
вывод
1
1
Разбор идеи от автора задачи. Сначала попробуйте сами.
Войдите, чтобы отправлять решения.