阿哈!
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
Description
这是一道交互题。
开拓星神阿基维利铺设的银河星轨原本是一棵无向连通树,用 条跃迁航道连接着 个世界。
然而,欢愉星神阿哈觉得这太无聊了。为了找点乐子,祂可能在某片星区中偷偷折叠了空间,在两个原本不直接相连的世界之间建立了一条额外的「欢愉小道」。
作为一名登上星穹列车的无名客,你受命排查这片星区是否遭到了阿哈的恶作剧。你可以调用列车智库的雷达进行空间探测:每次探测,你可以将 ()个不同的世界输入雷达。雷达会返回这 个世界在当前真实的星轨网络(如果阿哈建了小道,则网络包含这条额外边;否则就是原树)中,两两之间最短跃迁距离的最小值。距离定义为经过的边数。
由于列车的跃迁能量极其珍贵,你最多只能进行 次询问探测。你需要在耗尽能量前,判断出这片星区是否存在阿哈的「欢愉小道」。
Interaction
首先,你需要从标准输入读取一个整数 (),表示该星区的世界数量。世界的编号为 到 。
接下来一行,包含 个整数 ,表示世界 与 之间有一条跃迁航道。保证 。
读取完原树结构后,你可以开始调用雷达。询问格式如下:
? s:进行一次探测。 是一个长度恰好为 的仅包含字符0或1的字符串,下标从 开始。这个字符串的第 个位置为 的话,说明这次探测要包含该世界;否则,这次探测不包含该世界。- 设 为 中
1的个数,你需要保证 。
发出询问后,你需要从标准输入读取一个整数 ,代表这 个点在实际网络中两两之间最短距离的最小值。
当你得出结论后,请用以下格式输出你的答案:
! 0:表示星轨完全正常,阿哈没来过。! 1:表示该星区存在「欢愉小道」。
输出答案后,当前数据的交互即告结束,你应该立即正常退出程序。输出答案不占用一次询问次数。
每次输出(包括询问和回答)后,请务必刷新输出缓冲区,否则可能得到除答案正确之外的意想不到的结果:
- 对于 C/C++ 而言,你可以使用
fflush(stdout); - 对于 Java 而言,你可以使用
System.out.flush(); - 对于 Python 而言,你可以使用
sys.stdout.flush()
如果询问次数超过了 次,或者输出的答案错误,你将收到答案错误的评测结果。
保证交互器是非自适应的(即实际网络结构在交互开始前已经固定,阿哈不会根据你的询问动态改变小道的位置),并且新加的边不会导致网络出现重边或自环。
Samples
6
1 2 3 3 5
2
2
? 101000
? 100010
! 1
Notes
第一组样例的图如下,新添的欢愉小道是 :

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