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

To jest zadanie interaktywne.

Little Cyan Fish ma prosty graf nieskierowany o $n$ wierzchołkach ponumerowanych od $1$ do $n$ oraz $m$ krawędziach ponumerowanych od $1$ do $m$. Początkowo kolor wierzchołka $i$ jest równy $i$.

Dwóch graczy, A oraz B, rozgrywa grę składającą się z $m$ rund. W każdej rundzie gracze wykonują po kolei następujące akcje:

  • Gracz A wybiera krawędź $(u, v)$, która nie została wybrana w żadnej poprzedniej rundzie.
  • Gracz B wybiera jeden z końców tej krawędzi i zmienia jego kolor na aktualny kolor drugiego końca.
problem_22885_1d373c463b7457fcdd79e7710dbf7e58.png

Po wszystkich $m$ rundach gracz B wygrywa, jeśli wszystkie wierzchołki mają ten sam kolor. W przeciwnym razie wygrywa gracz A.

Little Cyan Fish chce, abyś ustalił, który gracz może zagwarantować sobie zwycięstwo niezależnie od ruchów drugiego gracza. Następnie zagraj jako ten gracz przeciwko niemu i wygraj grę.

Wejście

Zadanie zawiera wiele przypadków testowych. Pierwszy wiersz wejścia zawiera jedną liczbę całkowitą $T$ ($1 \le T \le 10^4$), oznaczającą liczbę przypadków testowych.

Dla każdego przypadku testowego pierwszy wiersz zawiera dwie liczby całkowite $n$ oraz $m$ ($2 \le n \le 10^5$, $1 \le m \le 10^5$), oznaczające odpowiednio liczbę wierzchołków oraz liczbę krawędzi.

Kolejne $m$ wierszy opisuje krawędzie. $i$-ty z tych wierszy zawiera dwie liczby całkowite $u_i$ oraz $v_i$ ($1 \le u_i, v_i \le n$, $u_i \ne v_i$), co oznacza, że krawędź $i$ łączy wierzchołki $u_i$ oraz $v_i$.

Gwarantowane jest, że graf nie zawiera pętli własnych ani krawędzi wielokrotnych. Graf może być niespójny.

Gwarantowane jest, że suma wartości $n$ po wszystkich przypadkach testowych nie przekracza $10^5$, oraz że suma wartości $m$ po wszystkich przypadkach testowych nie przekracza $10^5$.

Po wczytaniu grafu dokończ interakcję dla tego przypadku testowego przed wczytaniem kolejnego grafu.

Interakcja

Aby wybrać swoją rolę, wypisz wiersz zawierający A lub B. Wypisz A, jeśli gracz A może zagwarantować sobie zwycięstwo, lub B, jeśli gracz B może zagwarantować sobie zwycięstwo. Little Cyan Fish zagra jako drugi gracz.

Następnie rozegraj dokładnie $m$ rund w następujący sposób.

  • Jeśli grasz jako A, wypisz wiersz zawierający jedną liczbę całkowitą $e$ ($1 \le e \le m$) — numer krawędzi, która nie została wybrana w żadnej poprzedniej rundzie. W odpowiedzi otrzymasz w wierszu jedną liczbę całkowitą $x$. Wierzchołek $x$ jest końcem krawędzi $e$, a jego kolor zmienia się na aktualny kolor drugiego końca.
  • Jeśli grasz jako B, wczytaj z wiersza jedną liczbę całkowitą $e$ ($1 \le e \le m$) — numer krawędzi, która nie została wybrana w żadnej poprzedniej rundzie. Wypisz wiersz zawierający jedną liczbę całkowitą $x$ — koniec krawędzi $e$. Kolor wierzchołka $x$ zmienia się na aktualny kolor drugiego końca.

Po wszystkich $m$ rundach wczytaj jedną liczbę całkowitą. Liczba ta jest równa 1, jeśli wybrałeś właściwą rolę i wygrałeś grę. Po otrzymaniu 1 przejdź do kolejnego przypadku testowego. Po ostatnim przypadku testowym Twój program powinien zakończyć działanie.

Interaktor wyśle -1, jeśli wybierzesz nieprawidłową rolę, wykonasz nieprawidłowy ruch lub przegrasz grę. Jeśli w dowolnym momencie otrzymasz -1, Twój program powinien natychmiast zakończyć działanie.

Po wypisaniu swojej roli lub ruchu nie zapomnij wypisać znaku nowej linii i opróżnić bufora wyjścia (flush).

Narzędzie testujące: Udostępniono narzędzie testujące, aby pomóc zawodnikom w tworzeniu i testowaniu swoich rozwiązań. Narzędzie to można pobrać z załączników. Uruchom narzędzie z opcją -h, aby wyświetlić instrukcję użycia. Narzędzie testujące obejmuje tylko niektóre scenariusze testowe i funkcje obsługiwane przez oficjalny interaktor.

Przykład

Wejście 1

2
3 2
2 3
1 2

1

2

1
4 3
1 2
2 3
3 4


2

4

3
1

Wyjście 1




B

3

1






A
1

3

2

Uwagi

Dwie rozgrywki z przykładu przedstawiono poniżej. W każdym kroku A wybiera wyróżnioną krawędź, a B przemalowuje zakreślony wierzchołek. Krawędzie przerywane zostały wybrane wcześniej.

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.