Universal Cup Judging System

Universal Cup

时间限制: 1 s 内存限制: 1024 MB
统计

Це двопрохідна задача (multi-pass).

VegiCat і VegiDog грають у гру з лісом із $n$ вершин, пронумерованих від $1$ до $n$, та $m$ ребер. Ліс — це неорієнтований граф без циклів. Він не обов'язково зв'язний.

problem_23600_31ed0f9f305bd48a6d853fa9d86253e5.png

На першому етапі VegiCat присвоює кожній вершині $u$ ціле число $a_u$ ($1 \le a_u \le 2n$). Значення можуть повторюватися.

Після того як VegiCat закінчує присвоювати значення, вершини перенумеровуються. Нехай $p_1, p_2, \ldots, p_n$ — перестановка чисел $1, 2, \ldots, n$, у якій кожне ціле число від $1$ до $n$ зустрічається рівно один раз. Для кожного $u$ вершина, яка спочатку мала номер $u$, тепер отримує номер $p_u$.

Кожне ребро $(u, v)$ перетворюється на $(p_u, p_v)$. Кожна вершина зберігає присвоєне їй значення. Нехай $b_i$ — значення у вершині $i$ після перенумерації. Тоді $b_{p_u} = a_u$.

На другому етапі VegiDog отримує лише $n$ та $b_1, b_2, \ldots, b_n$, без початкового лісу чи перестановки $p$. Він повинен відновити всі ребра, використовуючи нові номери вершин.

Розробіть стратегії для обох гравців, які працюють для кожного коректного лісу та кожної перестановки $p$.

Вхідні дані

Ваша програма запускатиметься двічі: спочатку за VegiCat, потім за VegiDog. Набори вхідних даних з'являються в однаковому порядку в обох запусках.

Перший запуск. Перший рядок містить рядок cat, який вказує на те, що ви граєте за VegiCat.

Другий рядок містить ціле число $T$ ($1 \le T \le 10^4$) — кількість наборів вхідних даних. Далі йде опис наборів вхідних даних.

Перший рядок кожного набору вхідних даних містить два цілі числа $n$ і $m$ ($1 \le n \le 2 \cdot 10^5$, $0 \le m < n$) — кількість вершин і ребер.

Кожен із наступних $m$ рядків містить два цілі числа $u$ і $v$ ($1 \le u, v \le n$, $u \ne v$), що описують неорієнтоване ребро між вершинами $u$ і $v$.

Гарантується, що граф не має циклів або кратних ребер.

Гарантується, що сума $n$ за всіма наборами вхідних даних не перевищує $2 \cdot 10^5$.

Другий запуск. Перший рядок містить рядок dog, який вказує на те, що ви граєте за VegiDog.

Другий рядок містить ціле число $T$ ($1 \le T \le 10^4$) — кількість наборів вхідних даних. Далі йде опис наборів вхідних даних.

Перший рядок кожного набору вхідних даних містить ціле число $n$ ($1 \le n \le 2 \cdot 10^5$) — кількість вершин.

Другий рядок містить $n$ цілих чисел $b_1, b_2, \ldots, b_n$ ($1 \le b_i \le 2n$) — присвоєні значення в новому порядку вершин.

Гарантується, що сума $n$ за всіма наборами вхідних даних не перевищує $2 \cdot 10^5$.

Вихідні дані

Перший запуск. Для кожного набору вхідних даних виведіть в одному рядку $n$ цілих чисел $a_1, a_2, \ldots, a_n$ ($1 \le a_i \le 2n$). Ціле число $a_i$ — це значення, присвоєне вершині $i$.

Другий запуск. Для кожного набору вхідних даних у першому рядку виведіть ціле число $m$ — кількість ребер. Кожен із наступних $m$ рядків повинен містити два цілі числа $u$ і $v$ ($1 \le u, v \le n$, $u \ne v$), що описують ребро за допомогою нових номерів вершин.

Виведіть кожне ребро один раз у довільному порядку. Будь-який із кінців ребра може йти першим. Якщо $m = 0$, виведіть лише $0$.

Приклади

Вхідні дані 1

cat
4
1 0
4 3
1 2
4 3
2 3
7 2
6 4
7 1
10 7
10 9
7 9
10 5
4 8
3 7
4 10
1 2

Вихідні дані 1

1
2 5 8 5
11 11 4 11 3 7 2
10 13 12 5 3 2 16 6 19 3

Вхідні дані 2

dog
4
1
1
4
5 2 5 8
7
11 7 2 11 11 3 4
10
16 3 13 5 10 12 19 6 2 3

Вихідні дані 2

0
3
1 4
2 1
4 3
2
4 3
5 2
7
1 7
4 8
5 3
6 1
7 10
10 2
10 4

Примітка

У першому наборі вхідних даних ліс має одну вершину і не має ребер. VegiCat присвоює вершині значення $1$, а VegiDog виводить $0$.

В останньому наборі вхідних даних перестановка дорівнює $p = [5, 3, 6, 4, 2, 9, 1, 8, 7, 10]$.

VegiCat присвоює $a_7 = 16$. Оскільки $p_7 = 1$, VegiDog отримує $b_1 = 16$.

Початкове ребро $(3, 7)$ переходить у $(p_3, p_7) = (6, 1)$.

Початкове ребро $(4, 10)$ переходить у $(p_4, p_{10}) = (4, 10)$. У прикладі це ребро виводиться як $(10, 4)$, що подає те саме неорієнтоване ребро.

Приклад ілюструє формати вхідних і вихідних даних. Його відповіді є правильними для показаних графів і перестановок. Проте не гарантується, що присвоєння в прикладі є частиною стратегії, яка працює для кожного коректного лісу та кожної перестановки.

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.