Universal Cup Judging System

Universal Cup

Time Limit: 3 s Memory Limit: 2048 MB Total points: 100 Difficulty: [show] Interactive Hackable ✓
Statistics

Đây là bài toán tương tác.

Little Cyan Fish có một đồ thị vô hướng đơn gồm $n$ đỉnh được đánh số từ $1$ đến $n$ và $m$ cạnh được đánh số từ $1$ đến $m$. Ban đầu, màu của đỉnh $i$ là $i$.

Hai người chơi, A và B, chơi một trò chơi gồm $m$ vòng. Trong mỗi vòng, hai người chơi lần lượt thực hiện các hành động sau theo thứ tự:

  • Người chơi A chọn một cạnh $(u, v)$ chưa từng được chọn ở bất kỳ vòng nào trước đó.
  • Người chơi B chọn một đầu mút của cạnh này và đổi màu của nó thành màu hiện tại của đầu mút còn lại.
problem_22885_1d373c463b7457fcdd79e7710dbf7e58.png

Sau tất cả $m$ vòng, Người chơi B thắng nếu tất cả các đỉnh đều có cùng một màu. Ngược lại, Người chơi A thắng.

Little Cyan Fish muốn bạn xác định xem người chơi nào có thể đảm bảo chiến thắng bất kể các nước đi của người chơi kia. Sau đó hãy đóng vai người chơi đó đấu với cậu ấy và giành chiến thắng.

Dữ liệu vào

Có nhiều bộ dữ liệu. Dòng đầu tiên của dữ liệu vào chứa một số nguyên $T$ ($1 \le T \le 10^4$), cho biết số lượng bộ dữ liệu.

Đối với mỗi bộ dữ liệu, dòng đầu tiên chứa hai số nguyên $n$ và $m$ ($2 \le n \le 10^5$, $1 \le m \le 10^5$), lần lượt cho biết số lượng đỉnh và số lượng cạnh.

$m$ dòng tiếp theo mô tả các cạnh. Dòng thứ $i$ trong các dòng này chứa hai số nguyên $u_i$ và $v_i$ ($1 \le u_i, v_i \le n$, $u_i \ne v_i$), có nghĩa là cạnh $i$ nối hai đỉnh $u_i$ và $v_i$.

Dữ liệu đảm bảo đồ thị không có khuyên hay đa cạnh. Đồ thị có thể không liên thông.

Dữ liệu đảm bảo tổng của $n$ trên tất cả các bộ dữ liệu không vượt quá $10^5$, và tổng của $m$ trên tất cả các bộ dữ liệu không vượt quá $10^5$.

Sau khi đọc xong một đồ thị, hãy hoàn thành phần giao tiếp của bộ dữ liệu đó trước khi đọc đồ thị tiếp theo.

Giao tiếp

Để chọn vai của bạn, hãy in ra một dòng chứa A hoặc B. In ra A nếu Người chơi A có thể đảm bảo chiến thắng, hoặc B nếu Người chơi B có thể đảm bảo chiến thắng. Little Cyan Fish sẽ đóng vai người chơi còn lại.

Sau đó hãy chơi đúng $m$ vòng như sau.

  • Nếu bạn đóng vai A, hãy in ra một dòng chứa một số nguyên $e$ ($1 \le e \le m$), là chỉ số của một cạnh chưa từng được chọn ở bất kỳ vòng nào trước đó. Để phản hồi, bạn sẽ nhận được một số nguyên $x$ trên một dòng. Đỉnh $x$ là một đầu mút của cạnh $e$, và màu của nó được đổi thành màu hiện tại của đầu mút còn lại.
  • Nếu bạn đóng vai B, hãy đọc một số nguyên $e$ ($1 \le e \le m$) trên một dòng, là chỉ số của một cạnh chưa từng được chọn ở bất kỳ vòng nào trước đó. Hãy in ra một dòng chứa một số nguyên $x$, là một đầu mút của cạnh $e$. Màu của đỉnh $x$ sẽ được đổi thành màu hiện tại của đầu mút còn lại.

Sau tất cả $m$ vòng, hãy đọc một số nguyên. Số nguyên này là 1 nếu bạn đã chọn đúng vai và thắng trò chơi. Sau khi nhận được 1, hãy tiếp tục với bộ dữ liệu tiếp theo. Sau bộ dữ liệu cuối cùng, chương trình của bạn phải kết thúc.

Trình chấm tương tác sẽ gửi -1 nếu bạn chọn sai vai, thực hiện nước đi không hợp lệ, hoặc thua trò chơi. Nếu bạn nhận được -1 ở bất kỳ thời điểm nào, chương trình của bạn phải kết thúc ngay lập tức.

Sau khi in ra vai hoặc nước đi của bạn, đừng quên in ký tự xuống dòng và làm rỗng bộ đệm đầu ra (flush).

Công cụ kiểm thử: Một công cụ kiểm thử được cung cấp để giúp thí sinh phát triển và kiểm thử lời giải của mình. Bạn có thể tải công cụ này từ phần tệp đính kèm. Chạy công cụ với tùy chọn -h để hiển thị hướng dẫn sử dụng. Công cụ kiểm thử chỉ bao gồm một số kịch bản kiểm thử và tính năng được hỗ trợ bởi trình chấm tương tác chính thức.

Ví dụ

Dữ liệu vào 1

2
3 2
2 3
1 2

1

2

1
4 3
1 2
2 3
3 4


2

4

3
1

Dữ liệu ra 1




B

3

1






A
1

3

2

Ghi chú

Hai ván chơi trong ví dụ được minh họa dưới đây. Ở mỗi bước, A chọn cạnh được tô đậm và B tô lại màu cho đỉnh được khoanh tròn. Các cạnh nét đứt đã được chọn ở các bước trước đó.

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.