CF2133C The Nether

题目描述

这是一个交互题。 Steve 最近发现了下界,他在自己的世界里建造了 $n$ 个下界传送门,每个传送门的位置都不同。 每个传送门都以有向的方式连接到若干(可能为零)其他传送门。为了避免迷路,Steve 精心设计了传送门网络,使得不存在通过一系列传送门跳跃后又回到原位置的情况;形式上,这个网络构成了一个有向无环图(DAG)。 Steve 不会告诉你哪些传送门彼此相连,但他允许你进行询问。每次询问时,你需要给 Steve 一个位置集合 $S = \{s_1, s_2, \ldots, s_k\}$ 以及一个起始位置 $x \in S$。Steve 会帮你计算从 $x$ 出发,仅经过 $S$ 中的位置的最长路径,并告诉你这条路径包含多少个位置。(如果从 $x$ 出发无法到达 $S$ 中的其他位置,Steve 会回答 $1$。) 你想获得成就“热门景点”,因此你希望找到一条经过尽可能多位置的路径。Steve 今天格外慷慨,他允许你进行 $2 \cdot n$ 次询问来找到这条路径。

输入格式

每个测试点包含多个测试用例。第一行包含一个整数 $t$($1 \le t \le 1000$),表示测试用例的数量。 每个测试用例的唯一一行包含一个整数 $n$($2 \le n \le 500$),表示位置的数量。 保证所有测试用例中 $n^3$ 的和不超过 $500^3$。

输出格式

每个测试用例的交互从读取整数 $n$ 开始。然后最多可以进行 $2\cdot n$ 次查询。 要进行查询,请按以下格式输出一行: - $\texttt{?}\ x\ k\ s_1\ s_2\ \dots\ s_k$ 测评机将返回查询的答案。 找到最大长度的路径后,按以下格式输出一行: - $\texttt{!}\ k\ v_1\ v_2\ \dots\ v_k$ 这表示从入口 $v_1$ 开始,然后跳转到 $v_2$ ,再跳转到 $v_3$ ,以此类推,最后在 $v_k$ 结束。 请注意,输出答案**不计入** $2\cdot n$ 查询次数限制。 打印完每个查询后,不要忘记输出行尾并刷新 $^{\text{∗}}$ 输出。否则,您将收到 `Idleness limit exceeded` 的提示。 如果在任何交互步骤中读取的不是有效数据,而是 $-1$ ,则必须立即退出程序。这意味着由于查询无效或其他错误,您的程序将收到 `Wrong Answer` 。未退出可能会导致任意判定,因为您的程序将继续从封闭的数据流中读取数据。 交互器是**非自适应的**。在交互过程中,传送门之间的连接不会改变。 **Hacks*** 要 hack,请使用以下格式: 每个测试包含多个测试用例。第一行包含测试用例的数量 $t$($1\le t\le 1000$)。下面是测试用例的说明。 每个测试用例的第一行包含一个整数 $n$($2\le n\le 500$),表示位置数。 然后,输出 $n$ 行。第 $i$ 行的形式应为 $k_i\ v_1\ v_2\ \dots\ v_{k_i}$ ( $0 \le k_i \le n - 1$ , $1 \le v_j \le n$ , $v_j \ne i$ ),表示位于位置 $i$ 的入口在一个方向上连接(通往)位置 $v_1, v_2, \dots, v_{k_i}$ 。给定的网络必须是有向无环图。 所有测试用例中 $n^3$ 的总和不得超过 $500^3$ 。 若要刷新缓冲区,请使用: - `fflush(stdout)` 或 C++ 中的 `cout.flush()`; - 在 Python 中使用 `sys.stdout.flush()`; - 参见其他语言的文档。

说明/提示

在第一个测试用例中,传送门网络如下图所示: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF2133C/02ed3e165a7beaaacc49c93d4759b6f866a1a8a03b28902bc62719544bc3a135.png) - 从位置 $1$ 出发,仅经过 $\{1, 2, 3, 4\}$ 的最长路径是 $1 \rightarrow 4 \rightarrow 2$,包含 $3$ 个不同的位置。 - 从位置 $3$ 出发,仅经过 $\{2, 3, 4\}$ 的最长路径是 $3 \rightarrow 4 \rightarrow 2$,包含 $3$ 个不同的位置。 - 从位置 $5$ 出发,仅经过 $\{1, 5\}$ 的最长路径是 $5 \rightarrow 1$,包含 $2$ 个不同的位置。 - 从 $2$ 出发无法到达 $\{2, 4\}$ 中的其他位置,因此 Steve 回答 $1$。 利用这些询问信息,可以确定一条最长路径为 $5 \rightarrow 1 \rightarrow 4 \rightarrow 2$。 在第二个测试用例中,传送门网络如下图所示: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF2133C/24a784357088e8ab1dfff5535bc5bdaa52460891ce80fe8935b122ed8e5cc316.png) 两个传送门之间没有连接,因此最长路径只包含一个位置。注意 $1\ 2$ 也是一个合法答案。 由 ChatGPT 4.1 翻译