ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила

2195. Бинарные деревья

Ограничение времени: 1.0 секунды
Ограничение памяти: 256 МБ
Вчера Вадим нашёл на дороге бинарное дерево a с корнем в 0 из N вершин. Однако любимым у него является бинарное дерево b с корнем в 0 из N вершин. Поэтому он решил преобразовать дерево a в дерево b, используя следующую операцию:
  • Выбирается произвольная вершина v, кроме корня. Её поддерево, включая саму вершину, переподвешивается за другую вершину u, которая не принадлежит выбранному поддереву. Результатом должно получиться бинарное дерево с корнем в 0.
Вадим уверен, что с помощью подобной операции возможно привести найденное бинарное дерево в изоморфное его любимому, используя не более чем N преобразований. Помогите ему найти последовательность этих преобразований.
Напомним, что бинарное дерево — это такое дерево, что каждая вершина является предком не более чем 2 других вершин, у корня предка нет. Два корневых бинарных дерева называются изоморфными, если:
  1. Эти два дерева состоят из одной вершины;
  2. Количество детей у корней этих деревьев одинаковое, поддерево каждого ребёнка первого изоморфно поддереву какого-то ребёнка второго и поддерево каждого ребёнка второго изоморфно поддереву какого-то ребёнка первого.

Исходные данные

В первой строке дано целое число N — количество вершин в найденном и любимом деревьях (2 ≤ N ≤ 103).
Во второй строке даны N−1 целых чисел pai — предки вершин найденного дерева с номерами от 1 до N−1 (0 ≤ paiN − 1).
Во третьей строке даны N−1 целых чисел pbi — предки вершин любимого дерева с номерами от 1 до N−1 (0 ≤ pbiN − 1).
Гарантируется, что данные деревья бинарные.

Результат

В первой строке выведите целое число M — количество использованных операций (0 ≤ MN).
В следующих M строках выведите пары чисел v и u — корень выбранного поддерева и вершина, за которую это поддерево подвешивается во время текущей операции (1 ≤ vN − 1, 0 ≤ uN − 1). Вершина u не может находиться в поддереве вершины v. Полученное после каждой операции дерево должно быть бинарным.
Гарантируется, что ответ существует. Если ответов несколько, выведите любой из них.

Примеры

исходные данныерезультат
4
0 0 1
0 1 2
1
2 3
4
2 0 0
0 3 0
2
3 1
1 0
Автор задачи: Вадим Баринов
Источник задачи: Квалификационный тур Уральского регионального чемпионата ICPC 2023