QOJ.ac

QOJ

时间限制: 2.0 s 内存限制: 2048 MB 总分: 100 难度: [显示] 通信
统计

Это задача с многократным прохождением.

В цифровых архивах Кивотоса Плана обнаружила коллекцию таинственных записей, известных как битемпоральные логи (Bitemporal Logs). Каждый лог состоит из $n$ записей, пронумерованных от $1$ до $n$, образующих корневое дерево. Однако структурные ограничения различаются в зависимости от того, является ли поток времени ретроспективным (Логика A) или проспективным (Логика B):

  • Логика A: Дерево с корнем в записи $1$; каждая другая запись $i$ имеет родителя $p_i$ такого, что $p_i < i$.
  • Логика B: Дерево с корнем в записи $n$; каждая другая запись $i$ имеет родителя $q_i$ такого, что $q_i > i$.

Для анализа структурных свойств Плана определяет два типа записей:

  • Терминал: Запись, которая не является родителем ни для одной другой записи.
  • Узел (Hub): Запись, которая является родителем по крайней мере для одной другой записи.

Плана наблюдала идеальную симметрию, называемую логическим резонансом. Это свойство выполняется между логом Логики A и логом Логики B тогда и только тогда, когда:

Для каждой записи $i$, запись $i$ является Терминалом в Логике A $\iff$ запись $i$ является Узлом в Логике B.

Плана математически доказала, что количество допустимых логов Логики A и логов Логики B при данном ограничении идентично. Теперь она поручает вам разработать универсальный протокол трансляции — биекцию — для преобразования одного формата лога в другой.

Оценка корректности

Ваше решение выполняется дважды на каждом тесте. В первом запуске ваше решение должно преобразовать каждый лог Логики A в лог Логики B, удовлетворяющий условию логического резонанса. Во втором запуске, получив лог Логики B, созданный вашим первым запуском, ваше решение должно точно восстановить исходный лог Логики A.

Входные данные второго запуска состоят из тех же логов Логики B, что были получены на выходе первого запуска, возможно, в другом порядке. Для каждого входного лога Логики B во втором запуске вы должны вывести соответствующий ему лог Логики A. Ваше решение считается верным, если для каждого такого лога Логики B ваш вывод в точности совпадает с тем логом Логики A, который породил его в первом запуске.

Для помощи в разработке и тестировании решения предоставляется инструмент тестирования.

Примечание: ваше решение будет оцениваться как интерактивная процедура в обоих запусках.

Входные данные

Первая строка входных данных содержит два целых числа $r$ ($r \in \{1, 2\}$) и $T$ ($1 \le T \le 10^5$), представляющие номер запуска и количество тестовых случаев.

Для каждого тестового случая первая строка содержит целое число $n$ ($2 \le n \le 10^3$).

Если $r = 1$, вторая строка содержит $n$ целых чисел $p_1, p_2, \dots, p_n$, представляющих лог Логики A. Гарантируется, что $p_1 = 0$, и для $2 \le i \le n$, $1 \le p_i < i$ — это запись, к которой присоединена запись $i$. Здесь мы используем $0$ для обозначения того, что у записи нет родителя (т.е. это корень).

В противном случае, если $r = 2$, вторая строка содержит $n$ целых чисел $q_1, q_2, \dots, q_n$, представляющих лог Логики B. Гарантируется, что $q_n = 0$, и для $1 \le i \le n - 1$, $i < q_i \le n$ — это запись, к которой присоединена запись $i$.

Гарантируется, что сумма $n^2$ по всем тестовым случаям не превышает $10^7$.

Выходные данные

Если $r = 1$, для каждого тестового случая выведите $n$ целых чисел, разделенных пробелом, $q_1, q_2, \dots, q_n$, представляющих преобразованный лог Логики B. Должно выполняться условие $q_n = 0$, и для $1 \le i \le n - 1$, $i < q_i \le n$. Свойство логического резонанса должно соблюдаться: запись $i$ является Терминалом в Логике A тогда и только тогда, когда запись $i$ является Узлом в Логике B.

В противном случае, если $r = 2$, для каждого тестового случая выведите $n$ целых чисел, разделенных пробелом, $p_1, p_2, \dots, p_n$, представляющих восстановленный лог Логики A.

Примеры

Пример 1 (Проход 1)

1 3
4
0 1 1 2
4
0 1 2 1
4
0 1 1 1

Пример 1 (Вывод 1)

3 3 4 0
3 4 4 0
2 3 4 0

Пример 2 (Проход 2)

2 3
4
2 3 4 0
4
3 3 4 0
4
3 4 4 0

Пример 2 (Вывод 2)

0 1 1 1
0 1 1 2
0 1 2 1

Примечание

Объяснение примера 1: Возможная допустимая биекция показана ниже.

Логика A и Логика B

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.