| Codeforces Round 1077 (Div. 1) |
|---|
| Закончено |
Это максимизационная версия задачи. Разница между версиями заключается в том, что в этой версии вам нужно найти максимальную возможную глубину среди всех общих деревьев. Также ограничение на $$$n$$$ в этой версии выше. Вы можете делать взломы, только если все версии задачи решены.
На Рождество Тортинита и Ариетта получили по рождественской ёлке. По случайному совпадению, их деревья имеют одинаковые свойства: оба имеют $$$n+1$$$ вершину и корень в вершине $$$0$$$. В своей рождественской открытке к вам каждая из них прилагает последовательность обхода DFS своего дерева после своих приветствий. Напомним, что последовательность обхода DFS генерируется следующим псевдокодом.
dfs_order = []
def dfs(v):
dfs_order.append(v)
выбрать любую перестановку s детей вершины v
for child in s:
dfs(child)
dfs(корень)
Пусть последовательность обхода DFS дерева Тортиниты будет $$$a_0, a_1, \ldots, a_n$$$, а дерева Ариетты — $$$b_0, b_1, \ldots, b_n$$$. Вы замечаете, что $$$a_0 = b_0 = 0$$$, и поскольку они сёстры-близнецы, вы задаетесь вопросом, могли ли они получить одно и то же дерево. Вы также чувствуете, что для своей рождественской ёлки сёстры не выберут тривиальную структуру. Поэтому вы хотите найти максимальную возможную глубину$$$^{\text{∗}}$$$ среди всех общих деревьев для обеих последовательностей.
$$$^{\text{∗}}$$$Глубина дерева определяется как максимальное количество рёбер на простом пути от любой вершины до корня.
Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.
Первая строка каждого набора входных данных содержит одно целое число $$$n$$$ ($$$2 \le n \le 10^6$$$).
Вторая строка каждого набора входных данных содержит $$$n$$$ целых чисел $$$a_1, a_2, \cdots, a_n$$$ ($$$1 \le a_i \le n$$$).
Третья строка каждого набора входных данных содержит $$$n$$$ целых чисел $$$b_1, b_2, \cdots, b_n$$$ ($$$1 \le b_i \le n$$$).
Гарантируется, что ни одна из последовательностей $$$a$$$ и $$$b$$$ не содержит дубликатов.
Гарантируется, что сумма значений $$$n$$$ по всем наборам входных данных не превосходит $$$10^6$$$.
Для каждого набора входных данных выведите одно целое число — максимальную возможную глубину среди всех общих деревьев.
421 21 221 22 153 1 5 2 44 3 2 1 552 3 4 1 53 2 1 4 5
2131
В первом наборе входных данных $$$a$$$ и $$$b$$$ одинаковы. Рассмотрим бамбук с рёбрами $$$(0,1)$$$ и $$$(1,2)$$$; он может дать обе последовательности обхода DFS, и его глубина равна $$$2$$$. Можно показать, что $$$2$$$ — максимальная глубина среди всех возможных общих деревьев.
Во втором наборе входных данных рассмотрите звездообразное дерево с рёбрами $$$(0,1)$$$ и $$$(0,2)$$$, глубина которого равна $$$1$$$. Можно показать, что $$$1$$$ — максимальная глубина среди всех возможных общих деревьев.
В третьем наборе входных данных на рисунке показано одно из деревьев с максимальной глубиной $$$3$$$.
| Название |
|---|


