Universal Cup Judging System

Universal Cup

Límite de tiempo: 3 s Límite de memoria: 2048 MB Puntuación total: 100 Dificultad: [mostrar] Interactivo Hackeable ✓
Estadísticas

Це інтерактивна задача.

У Маленької Ціанової Рибки (Little Cyan Fish) є простий неорієнтований граф із $n$ вершинами, пронумерованими від $1$ до $n$, та $m$ ребрами, пронумерованими від $1$ до $m$. Початково колір вершини $i$ дорівнює $i$.

Два гравці, A і B, грають у гру, що складається з $m$ раундів. У кожному раунді гравці по черзі виконують такі дії:

  • Гравець A обирає ребро $(u, v)$, яке не обиралося в жодному з попередніх раундів.
  • Гравець B обирає один із кінців цього ребра і змінює його колір на поточний колір іншого кінця.
problem_22885_1d373c463b7457fcdd79e7710dbf7e58.png

Після всіх $m$ раундів гравець B перемагає, якщо всі вершини мають однаковий колір. Інакше перемагає гравець A.

Маленька Ціанова Рибка хоче, щоб ви визначили, який гравець може гарантувати собі перемогу незалежно від ходів іншого гравця. Потім зіграйте за цього гравця проти нього та виграйте гру.

Вхідні дані

Є декілька наборів вхідних даних. Перший рядок вхідних даних містить одне ціле число $T$ ($1 \le T \le 10^4$), що позначає кількість наборів вхідних даних.

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

Наступні $m$ рядків описують ребра. $i$-й із цих рядків містить два цілі числа $u_i$ та $v_i$ ($1 \le u_i, v_i \le n$, $u_i \ne v_i$), які означають, що ребро $i$ з'єднує вершини $u_i$ та $v_i$.

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

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

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

Протокол взаємодії

Щоб обрати свою роль, виведіть рядок, що містить A або B. Виведіть A, якщо гравець A може гарантувати собі перемогу, або B, якщо гравець B може гарантувати собі перемогу. Маленька Ціанова Рибка гратиме за іншого гравця.

Потім зіграйте рівно $m$ раундів таким чином.

  • Якщо ви граєте за A, виведіть рядок, що містить одне ціле число $e$ ($1 \le e \le m$) — номер ребра, яке не обиралося в жодному з попередніх раундів. У відповідь ви отримаєте одне ціле число $x$ в окремому рядку. Вершина $x$ є кінцем ребра $e$, і її колір змінюється на поточний колір іншого кінця.
  • Якщо ви граєте за B, зчитайте одне ціле число $e$ ($1 \le e \le m$) в окремому рядку — номер ребра, яке не обиралося в жодному з попередніх раундів. Виведіть рядок, що містить одне ціле число $x$ — кінець ребра $e$. Колір вершини $x$ змінюється на поточний колір іншого кінця.

Після всіх $m$ раундів зчитайте одне ціле число. Це число дорівнює 1, якщо ви обрали правильну роль і виграли гру. Після отримання 1 переходьте до наступного набору вхідних даних. Після останнього набору вхідних даних ваша програма повинна завершитися.

Інтерактор надішле -1, якщо ви оберете неправильну роль, зробите некоректний хід або програєте гру. Якщо ви отримаєте -1 у будь-який момент, ваша програма повинна негайно завершитися.

Після виведення вашої ролі або ходу не забудьте вивести символ нового рядка та очистити буфер виведення (flush).

Інструмент для тестування: Для допомоги учасникам у розробці та тестуванні своїх розв'язків надається інструмент для тестування. Ви можете завантажити цей інструмент із вкладень. Запустіть інструмент з опцією -h, щоб відобразити інструкції з використання. Інструмент для тестування охоплює лише деякі з тестових сценаріїв та функцій, що підтримуються офіційним інтерактором.

Приклади

Вхідні дані 1

2
3 2
2 3
1 2

1

2

1
4 3
1 2
2 3
3 4


2

4

3
1

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




B

3

1






A
1

3

2

Примітка

Дві гри з прикладу показані нижче. На кожному кроці A обирає виділене ребро, а B перефарбовує обведену кружечком вершину. Пунктирні ребра були обрані раніше.

problem_22885_e7d00f1c7c737637218f9ce0216ec025.png

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.