#P14195. [ICPC 2024 Hangzhou R] Identify Chord
[ICPC 2024 Hangzhou R] Identify Chord
Description
这是一个交互题。
Grammy 有一个包含 个顶点的无向环图(),顶点编号为 到 。一个无向环图是指有 个顶点和 条无向边,所有边首尾相连形成一个环。具体地,对于每个 ,在顶点 和顶点 之间有一条双向边。
Grammy 觉得这个图太无聊了,于是她偷偷地选择了一对的顶点,连上一条无向边(称为“弦”),使得该图现在有 个顶点和 条边。
你的任务是在不超过 次查询内猜出这条弦的位置。每次查询,你可以给出两个顶点 和 ,Grammy 会告诉你这两个顶点之间的最短路径包含的边数。
请注意,交互器是,也就是说弦的位置在交互开始前就被确定。
Input Format
有多组测试数据。输入的第一行包含一个整数 (),表示测试数据组数。对于每组测试数据:
第一行为一个整数 (),表示顶点数。
Output Format
每次查询,需要输出一行,首先输出 ,然后空格,然后输出两个顶点 和 (),用空格分隔。输出后需要刷新输出缓冲区,然后你的程序将读入一个整数,表示这两个顶点之间最短路经过的边数。
当你认为找到了弦的位置时,输出一行,首先输出 ,空格,然后输出两个顶点 和 (),表示弦连接了 与 。此时应立即刷新输出缓冲区,之后程序应读入一个整数 (),表示你的猜测是否正确。如果 ,表示猜测正确,应继续处理下一个测试数据(或者如果已经没有更多数据则直接退出)。否则,如果 ,表示猜测错误,应立即退出程序,将获得 判定。注意,猜测弦的位置不计入 次查询次数。
在刷新输出缓冲区时,你可以使用:
- (如果使用 )或 (如果使用 )在 C 和 C++ 中。
- 在 Java 中。
- 在 Python 中。
2
6
2
1
1
4
2
1
? 1 5
? 2 4
! 4 2
? 2 4
! 1 3
Hint
示例测试点中的图如下图所示:
:::align{center}
:::
由 ChatGPT 5 翻译
京公网安备 11011102002149号