序号 | 标题 | 作者 | 发表时间 | 费用 | 订购数 | 操作 |
---|
Alice 和 Bob 在玩一个染色游戏。游戏在一张 $N$ 个点 $M(N-1 \le M \le N)$ 条边的连通图上进行,Bob 想要围住 Alice,而 Alice 想要逃出 Bob 的包围。
游戏开始时,Alice 将 $1$ 号点涂成了黑色表示占领了 $1$ 号点,Bob 将点集 SS 中的所有点涂成了白色表示占领了这 $|S|$ 个点,保证 $1$ 不在 $S$ 中。接下来两个人轮流进行操作,由 Alice 先 手,每轮中轮到的玩家可以从一个被自己占领的点出发 (对于 Alice 为黑色点对于 Bob 为白色 点),选择一个相邻且未被染色的点,占领该点并染上自己的颜色。如果不存在可以染色的点, 那么这位玩家必须跳过这个回合。当所有点都被染完色时,游戏结束。
Alice 和 Bob 约定了一个图中的非空点集 $T$,如果游戏结束时 $T $中的点全都涂成白色,则代表 Bob 成功围住了 Alice,Bob 获胜。反之一定存在一个 $T$ 中的点被涂成黑色,那么 Alice 获胜。注意这里的 $T$ 可能会包含 $S$ 中的点和 $1$ 号点。
Alice 和 Bob 都会使用最优策略。Bob 注意到,在有些局面下,Alice 优势很大,如果能让 Alice 主动跳过 Alice 的一些行动回合来获得一个更加公平的局面,这个游戏会更有可玩性。 Bob 想知道,如果 Alice 跳过前 $k$ 个回合之后自己能够获胜,那么这个 $k$ 的最小值是多少。 Alice 只会跳过 Alice 的前 $k$ 个回合,并且在剩下的回合中采用最优策略,即你可以理解为 Bob 在 Alice 的第一回合行动之前额外行动了 $k$ 个回合。注意如果 Bob 在 Alice 跳过的一个回合中 没有合法行动,那么 Bob 仍需按照规则跳过自己的回合。如果在原图上就是 Bob 获胜那么输出 $0$。如果 $k=1000000$ 时 Bob 也不能取胜,则输出 $1000000$。
由于这个图可能很大,我们用如下的方式生成。
首先生成一个含有标号为 $1$ 到 $n$ 一共 $n$ 个点的空图。
接下来加入 $m$ 条链,第 $i$ 条链记作 $(u_i,v_i,l_i)$,其中 $1 \le u_i,v_i \le n$ 且 $u_i \neq v_i$。
首先我们加入 $l_i$ 个点,记作 $x_1^i,x_2^i,...,x_ {l_i}^i$ 。
然后在 $(u_i,x_1^i),(x_1^i,x_2^i),(x_2^i,x_3^i),...,(x_{l_i?1}^i,x_{l_i}^i),(x_{l_i}^i,v_i)$ 之间连上无向边。
在这次操作之后,本轮中新加入的 $l_i$ 个点不会再与其他的点之间连边,即不同的链中的 $x_1^i ... x_{l_i}^i$ 均为互不相同的点。特别地,如果 $l=0$,那么就不添加新点,直接在$ (u_i,v_i)$ 之间连上无向边。
保证 $S$ 集合以及 $T$ 集合的点均为一开始生成的 $n$ 个点之一。