Бинарные деревья | 프로그래밍의 벗 PivotOJ
PivotOJ

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

시간 제한: 1000ms메모리 제한: 1024MB출처: ICPC 2023-2024 Northwestern Russia QualificationBOJ 30594

문제

Вчера Вадим нашёл на дороге бинарное дерево aa с корнем в 0 из NN вершин. Однако любимым у него является бинарное дерево bb с корнем в 0 из NN вершин. Поэтому он решил преобразовать дерево aa в дерево bb, используя следующую операцию:

  • Выбирается произвольная вершина vv, кроме корня. Её поддерево, включая саму вершину, переподвешивается за другую вершину uu, которая не принадлежит выбранному поддереву. Результатом должно получиться бинарное дерево с корнем в 0.

Вадим уверен, что с помощью подобной операции возможно привести найденное бинарное дерево в изоморфное его любимому, используя не более, чем NN преобразований. Помогите ему найти последовательность этих преобразований.

Напомним, что бинарное дерево --- это такое дерево, что каждая вершина является предком не более, чем 2 других вершин, у корня предка нет. Два корневых бинарных дерева называются изоморфными, если:

  1. Эти два дерева состоят из одной вершины;
  2. Количество детей у корней этих деревьев одинаковое, поддерево каждого ребёнка первого изоморфно поддереву какого-то ребёнка второго и поддерево каждого ребёнка второго изоморфно поддереву какого-то ребёнка первого.

입력

В первой строке дано целое число NN --- количество вершин в найденном и любимом деревьях (2N103)(2 \le N \le 10^3).

Во второй строке даны N1N-1 целых чисел paipa_i --- предки вершин найденного дерева с номерами от 1 до N1N-1 (0paiN1)(0 \le pa_i \le N - 1).

Во третьей строке даны N1N-1 целых чисел pbipb_i --- предки вершин любимого дерева с номерами от 1 до N1N-1 (0pbiN1)(0 \le pb_i \le N - 1).

Гарантируется, что данные деревья бинарные.

출력

В первой строке выведите целое число MM --- количество использованных операций (0MN)(0 \le M \le N).

В следующих MM строках выведите пары чисел vv и uu --- корень выбранного поддерева и вершина, за которую это поддерево подвешивается во время текущей операции (1vN1,0uN1)(1 \le v \le N - 1, 0 \le u \le N - 1). Вершина uu не может находиться в поддереве вершины vv. Полученное после каждой операции дерево должно быть бинарным.

Гарантируется, что ответ существует. Если ответов несколько, выведите любой из них.

예제

예제 1

입력
4
0 0 1
0 1 2
출력
1
2 3

예제 2

입력
4
2 0 0
0 3 0
출력
0
코드를 제출하려면 로그인하세요.