eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Дерево

Дерево

В упорядоченном корневом дереве у каждой нелистовой вершины определён порядок сыновей. Деревья считаются изоморфными, если при некотором взаимно-однозначном отображении вершин сохраняются: \begin{itemize} \item отношение "вершина \textbf{s} является сыном вершины \textbf{f}", \item порядок сыновей у каждой вершины. \end{itemize} Дано упорядоченное корневое дерево \textbf{T} и список его модификаций. Модификации имеют вид: отрезать вершину с заданным номером вместе с поддеревом от её текущего отца и добавить в качестве самого правого сына к некоторой вершине. Требуется определить, после какой модификации дерево впервые становится изоморфным какому-то из предыдущих деревьев. \InputFile В первой строке входного файла записано два целых числа: \textbf{N} --- количество вершин в дереве и \textbf{M} --- количество модификаций (\textbf{2} ≤ \textbf{N} ≤ \textbf{100000}, \textbf{1} ≤ \textbf{M} ≤ \textbf{100000}). Вершины дерева пронумерованы натуральными числами от \textbf{1} до \textbf{N}. Корень дерева имеет номер \textbf{1}. В следующих \textbf{N} строках записаны упорядоченные списки сыновей для вершин исходного дерева. Каждый \textbf{i}-ый список описывается количеством \textbf{K_i} сыновей \textbf{i}-ой вершины и последовательностью номеров её вершин-сыновей (\textbf{0}≤ \textbf{K_i} ≤ \textbf{N--1}). В оставшихся \textbf{M} строках описаны модификации дерева. Каждая модификация определяется двумя целыми числами \textbf{S_j} и \textbf{F_j} -- номером вершины, которую вместе с поддеревом отрезают от отца, и номером вершины, к которой её добавляют в качестве самого правого сына (\textbf{2} ≤ \textbf{S_j} ≤ \textbf{N}, \textbf{1} ≤ \textbf{F_j} ≤ \textbf{N}). Гарантируется, что вершина \textbf{F_j} не является потомком вершины \textbf{S_j} и не совпадает с ней. \OutputFile Если все \textbf{M+1} получающихся деревьев различны, в выходной файл необходимо вывести число \textbf{--1}. В противном случае нужно вывести через пробел два целых числа \textbf{A} и \textbf{B} --- номера двух изоморфных деревьев (\textbf{0} ≤ \textbf{A} < \textbf{B} ≤ \textbf{M}). Если пар изоморфных деревьев несколько, требуется вывести пару с минимальным номером \textbf{B}. Деревья нумеруются следующим образом: исходное дерево имеет номер \textbf{0}. После \textbf{j}-ой модификации получается\textbf{j}-ое дерево (\textbf{1} ≤ \textbf{j} ≤ \textbf{M}). \textbf{Комментарий} Ниже приведены некоторые деревья для первого теста из условия. \includegraphics{https://static.e-olymp.com/content/9f/9f17ae0b44aac616845d560e0152ed85cd88b030.jpg}
Лимит времени 1 секунда
Лимит использования памяти 64 MiB
Входные данные #1
12 15
2 5 2
0
2 11 9
2 8 7
2 3 4
0
0
0
0
0
3 6 12 10
0
3 1
8 2
7 2
6 4
10 4
12 4
9 5
6 8
10 8
12 8
8 5
9 2
4 5
6 9
6 8
Выходные данные #1
7 13
Источник Очный тур XIII Открытой Всесибирской олимпиады по программированию имени И.В. Поттосина