Олимпиадный тренинг

Задача . E. Весёлая жизнь в университете


Егор и его друг Арсений в этом году заканчивают учиться в школе и уже скоро поступят университет. И так как они очень ответственные ребята, они начали готовиться к поступлению уже сейчас.

Прежде всего они решили позаботиться о том, где будут жить долгие четыре года обучения, и зайдя на сайт университета, выяснили, что общежитие университета можно представить в виде корневого дерева из \(n\) вершин с корнем в вершине \(1\). В дереве каждая вершина представляет собой рекреацию с некоторым видом активности \(a_i\). Друзьям нужно выбрать \(2\) рекреации (не обязательно различные), в которых они поселятся. Ребята убеждены, что тем будет веселее их жизнь, чем больше значение следующей функции \(f(u, v) = diff(u, lca(u, v)) \cdot diff(v, lca(u, v))\). Помогите Егору и Арсению и найдите максимальное значение \(f(u, v)\) среди всех пар рекреаций!

\(^{\dagger} diff(u, v)\) — количество различных активностей, выписанных на простом пути от вершины \(u\) до вершины \(v\).

\(^{\dagger} lca(u, v)\) — такая вершина \(p\), что она находится на максимальном расстоянии от корня и является предком и вершины \(u\), и вершины \(v\).

Входные данные

Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число \(t\) (\(1 \le t \le 10^5\)) — количество наборов входных данных. Далее следует описание наборов входных данных.

Первая строка каждого набора входных данных содержит одно целое число \(n\) (\(1 \le n \le 3 \cdot 10^{5}\)).

Вторая строка каждого набора входных данных содержит \({n - 1}\) целых чисел \(p_2, p_3, \ldots,p_n\) (\(1 \le p_i \le i - 1\)), где \(p_i\) — предок вершины \(i\).

Третья строка каждого набора входных данных содержит \({n}\) целых чисел \(a_1, a_2, \ldots,a_n\) (\(1 \le a_i \le n\)), где \(a_i\) — номер активности, которая находится в вершине \(i\).

Гарантируется, что сумма \(n\) по всем наборам входных данных не превосходит \(3 \cdot 10^5\).

Выходные данные

Для каждого набора входных данных выведите максимальное значение \(f(u, v)\), по всем парам рекреаций \((u, v)\).

Примечание

Рассмотрим четвертый набор входных данных. Дерево имеет такой вид:

Все рекреации раскрашены в цвета. Одинаковые цвета означает что активности в рекреациях совпадают. Рассмотрим пару вершин \((11, 12)\), \(lca(11, 12) = 1\). Выпишем все активности на пути от \(11\) до \(1\) — \([11, 5, 1, 11]\), среди них различных активностей \(3\), то есть \(diff(11, 1) = 3\). Также выпишем все активности на пути от \(12\) до \(1\) — \([7, 8, 2, 11]\), среди них различных активностей \(4\), то есть \(diff(12, 1) = 4\). Получаем что \(f(11, 12) = diff(12, 1) \cdot diff(11, 1) = 4 \cdot 3 = 12\), что и является ответом для данного дерева. Можно показать, что ответ лучше получить невозможно.

Примеры
Входные данныеВыходные данные
1 4
2
1
1 2
7
1 1 2 2 3 3
6 5 2 3 6 5 6
13
1 1 1 2 2 2 3 3 4 5 6 6
2 2 2 1 4 9 7 2 5 2 1 11 2
12
1 1 1 2 2 3 4 4 7 7 6
11 2 1 11 12 8 5 8 8 5 11 7
2
9
9
12

time 1000 ms
memory 512 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w643
Комментарий учителя