E. Comparing Theories
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Сравнивать теории и проверять гипотезы — важная часть научного процесса. Одним из главных вопросов эволюционной биологии является изучение того, как развивалсь и создавались новые виды, в какие моменты произошла развилка и от одного вида пошло несколько разных ветвей развития. В этой задаче вам предстоит оценить, насколько отличаются два эволюционных дерева.

В данной задаче эволюционную историю $$$n$$$ современных видов мы будем представлять в виде двоичного дерева с $$$n$$$ листьями, соответствующими этим $$$n$$$ видам. Каждая внутренняя вершина соответствует устаревшему виду, от которого в некоторый момент произошло, для простоты, два других. Корень дерева — условный «начальный» вид, от которого в итоге происходят все остальные. Листья в дереве имеют номера от $$$1$$$ до $$$n$$$, внутренние вершины имеют номера от $$$n + 1$$$ до $$$2n - 1$$$. Корень имеет номер $$$2n - 1$$$.

Чтобы сравнить две эволюционные теории, используют разные метрики; одна из них — расстояние по тройкам. Рассмотрим произвольные три различных вида (листа в дереве). Пойдем от этих видов вверх и найдем те два вида, в которых произошло разбиение, приведшее к тому, что существуют три современных вида. Для трех видов $$$A$$$, $$$B$$$ и $$$C$$$ есть, по сути, три способа развития (изображены на картинке): от общего предка в некоторый момент отделился вид, из которого в итоге произошли $$$A$$$ и $$$B$$$, а также еще один вид, из которого позже произошел $$$C$$$. Аналогично, есть два других варианта с другими разбиениями. Будем говорить, что история эволюции тройки $$$(A, B, C)$$$ отличается в двух эволюционных деревьях, если структура того, как они произошли, отличается в первой и второй теории. Ниже изображены три способа, как могут выглядеть истории эволюции трех видов, каждое ребро на картинке также может состоять из цепочки промежуточных видов.

Найдите число троек современных видов, структура развития которых различается в двух заданных теориях.

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

В первой строке содержится число $$$n$$$ ($$$3 \le n \le 50\,000$$$) — число современных видов (также листьев в дереве). Далее идут две строки, описывающие первое и второе дерево соответственно.

Каждое дерево описано массивом родителей из $$$2n - 2$$$ чисел: для каждой вершины $$$i$$$ от $$$1$$$ до $$$2n - 2$$$ указан номер ее родителя $$$\t{parent[}i\t{]} \gt i$$$. Вершина с номером $$$2n - 1$$$ является корнем дерева. Гарантируется, что вершины с номерами от $$$1$$$ до $$$n$$$ являются листьями дерева и не встречаются как значения в массиве parent. Также гарантируется, что дерево двоичное: каждая внутренняя вершина имеет номер от $$$n + 1$$$ до $$$2n - 1$$$ и имеет два ребенка (то есть, каждое значение встречается дважды в массиве parent).

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

Выведите одно число — число троек видов, эволюционные истории которых отличаются в двух деревьях.

Система оценки
ПодзадачаБаллыОграничения
125$$$n \le 50$$$
210$$$n \le 200$$$
320$$$n \le 2000$$$
445Без дополнительных ограничений
Примеры
Входные данные
5
6 9 7 6 7 8 8 9
6 9 7 7 6 8 8 9
Выходные данные
4
Входные данные
5
8 7 7 6 6 8 9 9
7 8 6 9 6 7 8 9
Выходные данные
8
Примечание

Ниже изображены эволюционные деревья из первого примера:

Тройки видов, для которых эволюционные истории различаются: $$$(1, 3, 4), (1, 3, 5), (1, 4, 5), (3, 4, 5)$$$.

Второй пример:

В нем восемь отличающихся троек: $$$(1, 2, 3), (1, 2, 4), (1, 3, 4), (1, 3, 5), (1, 4, 5), (2, 3, 5), (2, 4, 5), (3, 4, 5)$$$.