10580: Центроїди дерева
Дано дерево із n вершин. Кожна вершина має колір. Потрібно обробити q запитів ( \(V,C\)): знайти відстань від \(V\) до найближчої до \(V\) вершини кольору \(C\) . Відстанню між вершинами називається мінімальна кількість ребер у дорозі між ними.
Формат вхідних даних
У першому рядку дано число n (\( 1 \le n \le 10^5 \)), наступний рядок містить числа \(p_1,p_2,...p_{n-1}\), \(0 \le p_i \le i\) . \(p_i\) – батько вершини \(i\) у дереві.
Далі іде рядок із числами \(a_0 , a_1 , ..., a_{n-1}\) . \(0 \le a_i \le n\) . \(a_i\) – колір вершини \(i\) .
Далі іде рядок із числом \(q\) (\( 1 \le q \le 10^5\)).
Наступні \(q\) рядків містять запити \(v,c\) (\( 0 \le v < n\) , \(0 \le c < n \)).
Формат вихідних даних
Для кожного запиту виведіть одне число – відстань до найближчої вершини потрібного кольору, або - 1 , якщо дерево не має вершин такого кольору.
Рішення, що працюють при \(1 \le n \le 200\), будуть набирати не менше 30 балів
Приклад вхідних даних
5
0 1 1 3
1 2 3 2 1
9
0 1
0 2
0 3
1 0
2 1
2 2
3 3
3 1
4 2
Приклад вихідних даних
0 1 2 -1 2 1 2 1 1
Коментарі