P14045 [SDCPC 2019] Game on a Graph

题目描述

有 $k$ 个人在一个连通无向简单图上玩游戏,该图有 $n$($n \ge 2$)个顶点(编号为 $0$ 到 $n-1$)和 $m$ 条边。这 $k$ 个人,编号为 $0$ 到 $k-1$,被分成两组,游戏规则如下: - 他们轮流进行操作。也就是说,第 $0$ 个人进行第 $1$ 步操作,第 $1$ 个人进行第 $2$ 步操作,依此类推,第 $(i \bmod k)$ 个人进行第 $(i+1)$ 步操作。 - 每当轮到某个人时,当前玩家必须从当前图中选择一条边,并将其移除。如果移除该边后图不再连通,则该玩家所属的小组输掉比赛(并且对方小组获胜),游戏立即结束。 给你游戏开始时的初始图信息,若所有人都以最优策略为本组争取胜利,问最终哪一组会赢? 注意,简单图指的是没有自环和重边的无向图。

输入格式

有多组测试数据。输入的第一行为整数 $T$,表示测试数据组数。对于每组测试数据: 第一行包含一个整数 $k$($2 \le k \le 10^5$),表示人数。 第二行包含一个长度为 $k$ 的字符串 $s_0s_1\dots s_{k-1}$($s_i \in \{\text{`1'}, \text{`2'}\}$)。$s_i = \text{`1' }$ 表示编号 $i$ 号的人属于第 1 组,$s_i = \text{`2'}$ 表示编号 $i$ 号的人属于第 2 组。 第三行包含两个整数 $n$ 和 $m$($2 \le n \le 10^5$,$n-1 \le m \le 10^5$),表示初始图的顶点数和边数。 接下来的 $m$ 行,每行包含两个整数 $u_i$ 和 $v_i$($0 \le u_i, v_i < n$),表示有一条边连接顶点 $u_i$ 和顶点 $v_i$。 保证: - 初始图为连通无向简单图。 - 至少有两个人分别属于不同的小组。 - 所有测试数据的 $k$ 之和,$n$ 之和,$m$ 之和不超过 $10^6$。

输出格式

对于每组测试数据,输出一行一个整数。如果第 1 组获胜,输出 ``1``;如果第 2 组获胜,输出 ``2``。

说明/提示

由 ChatGPT 5 翻译