luogu#P9793. [NERC2018] Cactus Search
[NERC2018] Cactus Search
题目背景
翻译自 NERC 2018 C 题。
如果你想让数组问题更难解决,可以在树上解决;如果你想让树的问题更难解决,可以在仙人掌上解决。
题目描述
在前几年,就有过人提出了许多关于仙人掌——连通无向图的问题,其中每条边最多属于一个简单的循环。更加直观地说,仙人掌是一棵树的概括,在这棵树上允许有一些环。下面的图片给出了仙人掌的一个例子。
你和 Chloe 在一个仙人掌上玩游戏,你有一株仙人掌,但是淘气的 Chloe 偷偷拿走了一个顶点 ,你需要在 次以内猜出 ,如果你猜到了 ,那你就赢了,如果你猜测的是另一个点 ,Chloe 会告诉你一个点 ,其中 到 经过的边数严格小于 到 。
输入格式
首先,第一行给你两个整数 和 ,其中 表示一共有 个顶点,图的边由一组边不同的路径表示, 表示它们的数量。
接下来一行, 个整数 ,表示该条路径经过了 个顶点,然后接下来 个整数,表示一次经过的路径(不会重复经过点)。输入中的图形是一个仙人掌。每次猜测,程序会返回你一些返回值,如果是 FOUND
,说明你猜对了,否则是 GO w
,表示 到 经过的边数严格小于你猜测的点到 的边数。你的程序每次询问要猜测不超过 次,如果你猜测的次数 次,那么你就不通过该测试点。
此外为了避免你是蒙对的,需要进行 次询问,每次猜测成功后,你直接进行下一轮询问,询问 次完直接退出。
输出格式
每次询问,你需要向标准输出输出一个整数 ,代表你猜测的结果,然后清空缓冲区。
你可以使用如下语句来清空缓冲区:
- 对于 C/C++:
fflush(stdout)
; - 对于 C++:
std::cout << std::flush
; - 对于 Java:
System.out.flush()
; - 对于 Python:
stdout.flush()
; - 对于 Pascal:
flush(output)
; - 对于其他语言,请自行查阅对应语言的帮助文档。
5 2
5 1 2 3 4 5
2 1 3
FOUND
GO 4
FOUND
GO 2
FOUND
GO 1
FOUND
GO 4
GO 5
FOUND
3
3
4
3
2
3
1
3
4
5
提示
数据保证 ,,。
注:为了方便比对,在样例输入输出上加入了一些空行进行对齐,实际输入输出中没有这些空行。