CF2179F.Blackslex and Another RGB Walking
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
这是一个二次运行(通讯)问题。
有两名玩家:玩家 A(Agent,特工)和玩家 B(Blackslex)。评测机会先与玩家 A 交互。在玩家 A 结束交互后,评测机会与玩家 B 交互。注意,玩家 A 和玩家 B 不能直接传递信息;他们只能向评测机发送或从评测机接收信息,但可以事先约定通信策略。
企鹅共和国是一个连通的无向二分图 G,有 n 个顶点和 m 条边。Blackslex 将在顶点 1 进行违禁野外研究。由于旅行限制,他将被随机送往一个未知顶点 v(2≤v≤n)。他必须设法到达顶点 1,但他对图结构一无所知。
为完成任务,他贿赂了一名企鹅特工,并提前约定了如下通信方式:特工将每个顶点涂成三种颜色之一:红色(r)、绿色(g)、蓝色(b)。对 Blackslex 来说,他只能看到他所在顶点 v 的每个邻居 ui(1≤i≤d(v))的颜色 ci。之后,他必须选择某一个 j(1≤j≤d(v)),并前往顶点 uj,使得他离顶点 1 更近。
邻居顺序是任意排列的。他只能看到周围邻居的颜色,无法得知自己当前所处的顶点编号;同样他也不知道相邻顶点的编号或任意其他顶点的信息。
你的任务是为特工和 Blackslex 分别实现策略。对于特工,需要将每个顶点染成三种颜色之一。对于 Blackslex,在每次询问中,他被随机放置在某个未知顶点 v,并给出所有邻居当前的颜色,你需要确定应前往哪一个邻居 uj,使他能朝顶点 1 前进。
∗ d(v) 表示顶点 v 的邻居数量。
输入格式
你的代码将在每组测试中被精确运行两次。第一次运行时你作为玩家 A(Agent),第二次运行时你作为玩家 B(Blackslex)。
第一次运行输入
第一行输入字符串 first,用于让你的程序判断这是第一次运行,应作为 Agent 角色。
每组测试包含多个测试用例。第一行输入一个整数 t(1≤t≤104),表示测试用例数量。
每个测试用例的第一行输入两个整数 n 和 m(2≤n≤105,n−1≤m≤105),分别表示顶点数和边数。
接下来 m 行每行包含两个整数 ai 和 bi(1≤ai,bi≤n,ai=bi),表示顶点 ai 与顶点 bi 之间有一条边。
保证以下条件:
- 所有测试用例中 n 之和与 m 之和均不超过 105。
- 每个测试用例的图都是连通的、无重边和自环的二分图。
第二次运行输入
第一行输入字符串 second,用于让你的程序判断这是第二次运行,应作为 Blackslex 角色。
每组测试包含多个测试用例。第一行输入整数 t(1≤t≤104),与第一次运行输入的 t 相同。每个测试用例的描述如下。
第一行输入一个整数 q(1≤q≤105),表示本测试用例中的询问数。
每个询问的第一行输入一个整数 d(v)(1≤d(v)≤105),表示当前顶点 v 的邻居数量。
接下来一行输入一个长度为 d(v) 的字符串 c,表示所有邻居的颜色,第 i 位(1≤i≤d(v))为邻居 ui 的颜色,可能为 r(红)、g(绿)、b(蓝)。
保证以下条件:
- 所有测试用例中 q 之和不超过 105。
- 所有测试用例中 d(v) 之和不超过 2⋅105。
- v=1。
第二次运行输入是非自适应的,即不会因你的程序输出而改变。
Hack 数据
构造 Hack 时,请使用如下输入格式:
第一行输入整数 t(1≤t≤104),表示测试用例数量。
接下来是每组测试用例的第一次运行描述:
每个测试用例第一行输入两个整数 n 和 m(2≤n≤105,n−1≤m≤105),描述图。
接下来 m 行每行输入两个整数 ai 和 bi,表示有一条 ai 到 bi 的边。
然后是每个测试用例第二次运行的描述:
每个测试用例的第一行输入一个整数 q(1≤q≤105),为该用例中询问数量。
每个询问的第一行输入一个整数 v(2≤v≤n),表示 Blackslex 被放置的顶点编号。
每个询问第二行输入 d(v) 个整数 p1,p2,…,pd(v)(1≤pi≤d(v),且 p 中每个数各不相同),表示邻居的排列顺序。设 q1<q2<…<qd(v) 为 v 的所有邻居,输入序中第 i 个邻居为 ui=qpi。
必须保证如下条件:
- 所有测试用例第一次运行中 n 和 m 之和均不超过 105。
- 每个测试用例图是连通、无重边且为二分图。
- 所有测试用例二次运行询问中 q 之和不超过 105。
- 所有测试用例 d(v) 总和不超过 2⋅105。
输出格式
对于第一次运行的每个测试用例,输出一个字符串 s,长度为 n,其中 si(1≤i≤n)为你给第 i 个顶点染的颜色。每个字符只能为 r(红)、g(绿)、b(蓝)。
对于第二次运行的每个测试用例中每个询问,输出一个整数 j(1≤j≤d(v)),uj 为 Blackslex 将前往的邻居编号。
输入输出样例
输入#1
first 2 7 8 1 2 1 6 3 2 4 2 6 4 4 7 5 6 5 7 4 4 1 2 1 3 4 2 4 3
输出#1
rrgbggr rbbb
输入#2
second 2 2 3 grr 3 gbr 1 2 rb
输出#2
1 3 1
说明/提示

图与样例中的染色方案如上图所示。
在第二次运行中,第一个测试用例有两个询问。
第一个询问在顶点 4,其邻居为 6、2、7。选择第一个邻居即走向顶点 6。
第二个询问在顶点 6,邻居为 5、4、1。选择第三个邻居(即走向顶点 1)。
第二个测试用例有一个询问,位于顶点 2,邻居为 1 和 4。选择第一个邻居即走向顶点 1。
请注意,由于便于阅读,样例间加了空行,实际测试数据没有空行。
[比赛时仅供参考] 图片无法显示时的备用图片链接:https://ibb.co/yFZS16vj
由 ChatGPT 5 翻译