AT_agc076_c [AGC076C] Slime Eat Slime
题目描述
共有 $N$ 只史莱姆,编号从 $1$ 到 $N$。每只史莱姆的颜色由一个 $0$ 到 $2K$(包含端点)之间的整数表示,第 $i$ 只史莱姆的颜色为 $C_i$。
目前有 $M$ 对史莱姆存在互为好友的关系。具体来说,史莱姆 $A_i$ 与 $B_i$ 是好友($1 \leq i \leq M$)。这里保证,对于任意两只史莱姆,通过一系列好友关系,总可以互相到达。
你可以进行如下操作:
- 首先,选择一对史莱姆 $(u, v)$,满足以下两个条件:
- 史莱姆 $u$ 与 $v$ 是好友。
- $(C_u - C_v) \bmod (2K+1) \geq K+1$(其中 $x \bmod y$ 的结果总在 $[0, y-1]$ 范围内)。
- 然后,让史莱姆 $u$ 吃掉史莱姆 $v$,史莱姆 $v$ 从场地上消失。此外,原本与 $v$ 为好友但不是 $u$ 的史莱姆,都会与 $u$ 成为好友(如果已经是好友则不作任何处理)。
请判断能否通过若干次上述操作后,只让第 $1$ 只史莱姆留在场上。
对于一组输入需要解答 $T$ 组数据。
输入格式
输入从标准输入读入,格式如下:
> $T$ $case_1$ $case_2$ $\vdots$ $case_T$
每组数据输入格式如下:
> $N$ $M$ $K$ $C_1$ $C_2$ $\cdots$ $C_N$ $A_1$ $B_1$ $A_2$ $B_2$ $\vdots$ $A_M$ $B_M$
输出格式
输出 $T$ 行。第 $i$ 行输出一行,若第 $i$ 组数据能够只剩下第 $1$ 只史莱姆则输出 `Yes`,否则输出 `No`。
说明/提示
### 样例解释 1
在第一个测试点中,无法进行任何操作。
在第二个测试点中,可以通过以下方式只剩下第 $1$ 只史莱姆:
- 选择 $(u,v)=(3,2)$,让史莱姆 $3$ 吃掉史莱姆 $2$,此时史莱姆 $2$ 消失,史莱姆 $1$ 和 $3$ 成为好友。
- 选择 $(u,v)=(1,3)$,让史莱姆 $1$ 吃掉史莱姆 $3$,此时史莱姆 $3$ 消失。
### 数据范围
- $1 \leq T \leq 125000$
- $2 \leq N \leq 250000$
- $N-1 \leq M \leq 250000$
- $1 \leq K \leq N$
- $0 \leq C_i \leq 2K$
- $1 \leq A_i < B_i \leq N$
- $(A_i,B_i) \neq (A_j,B_j)$($i \neq j$)
- 对于任意两只史莱姆,通过若干次好友关系都能互相到达。
- 所有 $T$ 组测试数据中 $N$ 的总和不超过 $250000$。
- 所有 $T$ 组测试数据中 $M$ 的总和不超过 $250000$。
- 所有输入值均为整数。
由 ChatGPT 5 翻译