Universal Cup Judging System

Universal Cup

時間限制: 3 s 記憶體限制: 2048 MB 總分: 100 难度: [顯示] 互動 可 Hack ✓
统计

Это интерактивная задача.

У Маленькой Циановой Рыбки (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.