P7595 「EZEC-8」猜树
题目背景
这是一道交互题。
题目描述
有一棵以 $1$ 为根的 $n$ 个点的有根树,您需要通过若干次询问得到这棵树的结构。
您可以使用两种询问:
1. `? 1 u v` 通过这种询问,您可以获得 $u$ 和 $v$ 之间的距离。
2. `? 2 u` 通过这种询问,您可以获得 $u$ 子树的大小和 $u$ 子树中的所有节点。
请通过使交互库输出不超过 $10^5$ 个数,得到这棵树的结构。
### 交互方式
输入树的大小 $n$ 以开始交互。
交互过程中,您可以进行题目描述中的两种询问。
对于第一种询问,交互库将会返回一个非负整数,表示 $u$ 节点和 $v$ 节点间的距离。
对于第二种询问,交互库将会先返回一个正整数 $num$,表示 $u$ 子树的大小。接下来会在同一行中返回 $num$ 个正整数,表示 $u$ 子树中的所有节点(节点顺序会被打乱)。
在您确定答案后,请以 `! fa[2] fa[3] ... fa[n]` 的形式输出一行,停止交互。其中 $fa[i]$ 表示这棵树中 $i$ 号节点的父节点。
在您输出一行后,请清空缓冲区:
- 在 C++ 中,使用 `fflush(stdout)` 或 `cout.flush()`。
- 在 Pascal 中,使用 `flush(output)`。
- 在 Python 中,使用 `stdout.flush()`。
- 其它语言请自行查阅文档。
输入格式
无
输出格式
无
说明/提示
**本题采用捆绑测试。**
- Subtask 1(5 points):$n \leq 5$。
- Subtask 2(15 points):$n \leq 100$。
- Subtask 3(20 points):$n \leq 500$。
- Subtask 4(15 points):树是一条链。
- Subtask 5(15 points):树是一棵完全二叉树。
- Subtask 6(30 points):无特殊限制。
对于 $100\%$ 的数据:$2 \leq n \leq 2000$,$1\le u,v \le n$。
**注意:询问不合法或交互库输出数超过 $10^5$ 后继续询问可能导致 TLE。**