#P15372. [UOI 2026] Game on a Tree
[UOI 2026] Game on a Tree
题目描述
给定一棵有 个顶点的树。每个叶子(即度为 的顶点)都有一个状态:活跃或不活跃。初始时,所有叶子均为不活跃。
共有 个询问,分为两种类型:
- 1 v —— 将叶子 的状态切换为相反状态(活跃 不活跃)。保证 是叶子(度为 的顶点)。
- 2 s —— 若令牌初始放置在顶点 ,判断下面所述游戏的胜者。保证 不是叶子(度 的顶点)。
游戏规则: 有一枚令牌初始位于顶点 。两名玩家轮流行动,先手先走。每次移动时,玩家将令牌移到一个未访问过的相邻顶点。当令牌位于一个无法再移动的顶点时游戏结束(即所有相邻顶点均已被访问过——该顶点必然是树的一个叶子)。若令牌最终停在一个活跃顶点,则后手获胜;否则,先手获胜。
强制在线模式
若输入参数 ,则每个询问中的实际顶点编号将被替换为加密后的编号。
考虑一个两种类型之一的询问:
1 x—— 一个加密的切换叶子状态的询问;2 x—— 一个加密的从某个起始顶点开始的游戏询问。
令 为一个计数器,初始为 。对于每个询问,数字 通过以下公式解密为实际顶点编号 :
即:
- 在询问
1 x中,你需要切换叶子 的状态; - 在询问
2 x中,游戏从顶点 开始。
每次询问后,计数器会更新:
- 在解密后叶子为 的
1 x询问后:; - 在答案为 的
2 x询问后:。
若 ,则询问不加密。此时,在询问 1 v 中,数字 即为需要切换状态的叶子;在询问 2 v 中,数字 即为游戏的起始顶点。
输入格式
第一行包含三个整数 、 和 (,,)。
接下来的 行描述树的边:每行两个整数 和 (,)。
再接下来的 行描述询问:每行一个类型 和参数 ()。若 ,则 是加密后的值。
输出格式
对于每个第二类询问,在单独一行中输出一个数字:若先手获胜输出 ,若后手获胜输出 。
输入输出样例 #1
输入 #1
4 5 0
1 2
1 3
1 4
2 1
1 2
1 3
1 4
2 1
输出 #1
1
2
输入输出样例 #2
输入 #2
5 5 0
1 2
1 3
3 4
3 5
2 3
1 2
1 4
1 5
2 3
输出 #2
1
2
输入输出样例 #3
输入 #3
4 5 1
1 2
1 3
1 4
2 1
1 1
1 4
1 2
2 3
输出 #3
1
2
说明/提示
在第一个例子中,树是一个以顶点 为中心、叶子为 的星形。初始时所有叶子均为不活跃:对于询问 2 1,先手可以唯一地走到任意一个叶子,令牌停在一个不活跃的叶子上——先手获胜,因此答案为 。在三个激活所有叶子的类型 询问之后,对于再次询问 2 1,无论先手走到哪里,令牌最终都会停在一个活跃的叶子上——后手获胜,因此答案为 。
在第二个例子中,树呈 形:顶点 连接顶点 、 以及顶点 ,而顶点 上连着叶子 。询问 2 3 表示树以顶点 为根。在激活任何叶子之前,先手可以从顶点 在一步内到达一个不活跃的叶子(例如 )——答案为 。激活叶子 、 和 后,从 出发的所有三条可能路径都以活跃叶子结束,因此先手无法避免失败——答案为 。
第三个例子展示了在线模式()在与第一个例子相同的树上的运行。初始 ,因此第一个加密询问 2 1 被解密为 2 1 并得到答案 ,之后 。下一个加密询问 1 1 解密为 1 2(因为 ),激活叶子 ,然后 。类似地,1 4 解密为 1 3(激活叶子 ,),1 2 解密为 1 4(激活叶子 ,)。最后一个加密询问 2 3 解密为 2 1 并返回 。
计分
- ( 分):,;
- ( 分):叶子永远不会从活跃变回不活跃,,;
- ( 分):叶子永远不会从活跃变回不活跃,每个询问中令牌初始都在顶点 ,;
- ( 分):,存在整数 使得 ,且树边对于所有 形式为 。
- ( 分):仅顶点 的度数大于 ,;
- ( 分):,;
- ( 分):,;
- ( 分):无额外限制。
翻译由 DeepSeek V4 Pro 完成