交互题 2000ms 1024MiB

阿哈!

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

Description

这是一道交互题。

开拓星神阿基维利铺设的银河星轨原本是一棵无向连通树,用 n1n-1 条跃迁航道连接着 nn 个世界。

然而,欢愉星神阿哈觉得这太无聊了。为了找点乐子,祂可能在某片星区中偷偷折叠了空间,在两个原本不直接相连的世界之间建立了一条额外的「欢愉小道」。

作为一名登上星穹列车的无名客,你受命排查这片星区是否遭到了阿哈的恶作剧。你可以调用列车智库的雷达进行空间探测:每次探测,你可以将 kkk2k \ge 2)个不同的世界输入雷达。雷达会返回这 kk 个世界在当前真实的星轨网络(如果阿哈建了小道,则网络包含这条额外边;否则就是原树)中,两两之间最短跃迁距离的最小值。距离定义为经过的边数。

由于列车的跃迁能量极其珍贵,你最多只能进行 150150 次询问探测。你需要在耗尽能量前,判断出这片星区是否存在阿哈的「欢愉小道」。

Interaction

首先,你需要从标准输入读取一个整数 nn3n5×1043 \le n \le 5 \times 10^4),表示该星区的世界数量。世界的编号为 11nn

接下来一行,包含 n1n-1 个整数 p2,p3,,pnp_2, p_3, \ldots, p_n,表示世界 iipip_i 之间有一条跃迁航道。保证 1pi<i1 \le p_i < i

读取完原树结构后,你可以开始调用雷达。询问格式如下:

  • ? s:进行一次探测。ss 是一个长度恰好nn 的仅包含字符 01 的字符串,下标从 11 开始。这个字符串的第 ii 个位置为 11 的话,说明这次探测要包含该世界;否则,这次探测不包含该世界。
  • kkss1 的个数,你需要保证 2kn2 \le k \le n

发出询问后,你需要从标准输入读取一个整数 dd,代表这 kk 个点在实际网络中两两之间最短距离的最小值。

当你得出结论后,请用以下格式输出你的答案:

  • ! 0:表示星轨完全正常,阿哈没来过。
  • ! 1:表示该星区存在「欢愉小道」。

输出答案后,当前数据的交互即告结束,你应该立即正常退出程序。输出答案不占用一次询问次数。

每次输出(包括询问和回答)后,请务必刷新输出缓冲区,否则可能得到除答案正确之外的意想不到的结果:

  • 对于 C/C++ 而言,你可以使用 fflush(stdout);
  • 对于 Java 而言,你可以使用 System.out.flush();
  • 对于 Python 而言,你可以使用 sys.stdout.flush()

如果询问次数超过了 150150 次,或者输出的答案错误,你将收到答案错误的评测结果。

保证交互器是非自适应的(即实际网络结构在交互开始前已经固定,阿哈不会根据你的询问动态改变小道的位置),并且新加的边不会导致网络出现重边或自环。

Samples

6
1 2 3 3 5

2

2


? 101000

? 100010

! 1

Notes

第一组样例的图如下,新添的欢愉小道是 (2,5)(2,5)

第一次问的世界集合为 {1,3}\{1, 3\},最短距离为 22。第二次问的世界集合为 {1,5}\{1, 5\},最短距离为 22。最后输出判断图里有新添的边,判断正确。

UESTC校赛 2026 合集

未参加
状态
已结束
规则
XCPC
题目
10
开始于
2026-8-1 16:00
结束于
2026-8-1 21:00
持续时间
5 小时
主持人
参赛人数
0