Kotlin Heroes: Episode 10 |
---|
Закончено |
Задано два корневых дерева, состоящих из $$$n$$$ вершин каждое. Вершины в деревьях пронумерованы от $$$1$$$ до $$$n$$$, корень дерева — вершина $$$1$$$.
Вы можете выполнять следующую операцию: выбрать дерево и вершину $$$v$$$ (кроме корня дерева) в нем; соединить дочерние узлы $$$v$$$ с родителем $$$v$$$ и удалить $$$v$$$ из дерева.
Давайте скажем, что два дерева равны, если выполняются оба следующих условия:
Ваша задача — вычислить минимальное количество вышеупомянутых операций, чтобы сделать деревья равными.
Первая строка содержит одно целое число $$$n$$$ ($$$2 \le n \le 40$$$) — количество вершин в деревьях.
Вторая строка содержит $$$n-1$$$ целых чисел $$$a_2, a_3, \dots, a_n$$$ ($$$1 \le a_i \le n$$$), где $$$a_i$$$ — родитель $$$i$$$-й вершины в первом дереве. Вершина $$$1$$$ — корень дерева.
Третья строка содержит $$$n-1$$$ целых чисел $$$b_2, b_3, \dots, b_n$$$ ($$$1 \le b_i \le n$$$), где $$$b_i$$$ — родитель $$$i$$$-й вершины во втором дереве. Вершина $$$1$$$ — корень дерева.
Выведите одно целое число — минимальное количество вышеупомянутых операций, чтобы сделать деревья равными.
51 5 5 11 4 1 2
4
211
0
104 7 10 6 2 9 7 1 11 2 10 3 4 6 6 5 5
10
Название |
---|