QOJ.ac

QOJ

Límite de tiempo: 3.0 s Límite de memoria: 1024 MB Puntuación total: 100 Dificultad: [mostrar] Interactivo

#8056. 旅行 2

Estadísticas

这是一个交互式问题。

Little Cyan Fish 是一位热衷于旅行的探险家,他正在探索一个由 $n$ 个城市组成的世界,城市编号从 $1$ 到 $n$。他从城市 $1$ 出发,希望绘制出连接这些城市的所有 $m$ 条双向道路。保证通过这些道路可以到达任何城市。此外,每条道路连接两个不同的城市,且任意两个城市之间最多只有一条道路。换句话说,这些城市和道路可以看作一个简单连通无向图。然而,由于没有地图,Little Cyan Fish 不知道这些道路的存在,因此他完全不知道这个世界中哪些道路是存在的。因此,他的目标是找到所有道路的信息。

为了实现这一目标,Little Cyan Fish 可以在这个世界中行走。当他站在某个城市时,Little Cyan Fish 可以看到当前城市的编号 $x$ 以及连接到城市 $x$ 的道路数量 $d_x$。然后,他可以选择通过从城市 $x$ 出发的第 $i$ 条道路($1 \le i \le d_x$)进行行走。每个城市出发的道路顺序是未知的,但却是固定的。行走后,Little Cyan Fish 将站在他所选道路的另一个端点,并向你报告新城市的信息,即它的编号和连接到该城市的道路数量。

你的目标是帮助 Little Cyan Fish 通过重复上述过程找到所有的道路。由于 Little Cyan Fish 的时间有限,且环球旅行会消耗大量时间,他最多只能行走 $2m + 2n$ 次。请帮助他!

交互

单次测试文件中包含多个测试用例。输入的第一行包含一个整数 $T$ ($1 \le T \le 1000$),表示测试用例的数量。

对于每个测试用例,你不会预先知道 $n$ 和 $m$ 的确切值——交互过程立即开始。保证 $1 \le n \le 2500$ 且 $1 \le m \le 10^4$。

在交互的每一轮中,交互器将提供当前城市编号 $x$ 以及连接到城市 $x$ 的道路数量 $d_x$。若要进行一次行走,你需要在一行中打印 “> i” ($1 \le i \le d_x$),表示你希望通过连接城市 $x$ 的第 $i$ 条道路进行行走。之后,新一轮交互开始,交互器将提供新的城市编号和连接到该城市的道路数量。你进行的查询次数不得超过 $2m + 2n$。

要给出你的答案,你需要打印 “! $x_1$ $y_1$ $x_2$ $y_2$ $\dots$ $x_m$ $y_m$”,表示你找到的所有道路。边的顺序可以是任意的,你只需要提供一种可能的方案即可。打印答案不被视为查询,也不计入 $2m + 2n$ 的限制。

在你提交答案后,如果你正确找到了所有 $m$ 条道路,交互器将打印一行 Correct,随后立即进入下一个测试用例。否则,如果你找到的 $m$ 条道路不正确,交互器将打印一行 Wrong,交互过程将被终止。如果你找到的道路少于 $m$ 条,交互器将等待你打印更多的边。这可能会导致 “Idleness Limit Exceeded”。

在打印查询后,请务必输出换行符并刷新缓冲区。为此,请在 C++ 中使用 fflush(stdout)cout.flush(),在 Java 中使用 System.out.flush(),在 Pascal 中使用 flush(output),或在 Python 中使用 stdout.flush()

保证隐藏的图是简单且连通的,所有测试用例的 $n$ 之和不超过 $10^4$,所有测试用例的 $m$ 之和不超过 $4 \times 10^4$。

该问题的交互器是非自适应的,这意味着图是预先确定的,不会根据交互过程而改变。

样例

输入 1

2
1 1
2 1
1 1
Correct
1 3
2 2
1 3
2 2
4 2
1 3
3 1
Correct

输出 1

> 1
> 1
! 1 2
> 3
> 1
> 3
> 2
> 2
> 2
! 1 2 1 3 1 4 2 4

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.