CF1810E Monsters
题目描述
有一个无向图,包含 $n$ 个顶点和 $m$ 条边。最初,每个顶点 $i$ 上都有一个危险值为 $a_{i}$ 的怪物。对于危险值为 $a_{i}$ 的怪物,只有在你已经打败了至少 $a_{i}$ 只其他怪物之后,才能打败它。
现在你想要打败所有的怪物。首先,你可以选择某个顶点 $s$ 并打败该顶点上的怪物(由于你还没有打败任何怪物,所以 $a_{s}$ 必须为 $0$)。然后,你可以通过边移动。如果你想从顶点 $u$ 移动到顶点 $v$,则必须满足以下条件:要么顶点 $v$ 上的怪物已经被打败,要么你现在可以打败它。对于第二种情况,你会打败顶点 $v$ 上的怪物并到达顶点 $v$。
你可以多次经过顶点和边。请判断你是否能够打败所有的怪物。
输入格式
每个测试点包含多组测试数据。第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。接下来是每组测试用例的描述。
每组测试用例的第一行包含两个整数 $n$ 和 $m$($1 \le n, m \le 2 \times 10^5$),分别表示图中的顶点数和边数。
每组测试用例的第二行包含 $n$ 个整数 $a_{1}, a_{2}, \ldots, a_{n}$($0 \le a_{i} \le n$),表示每个顶点上怪物的危险值。
接下来的 $m$ 行,每行包含两个整数 $u, v$($1 \le u, v \le n$),表示一条连接顶点 $u$ 和顶点 $v$ 的边。保证图中没有重边和自环。
保证所有测试用例中 $n$ 的总和以及 $m$ 的总和不超过 $2 \times 10^5$。
输出格式
对于每组测试用例,如果你可以打败所有的怪物,输出 "YES";否则输出 "NO"。
你可以用任意大小写输出答案(如 "yEs"、"yes"、"Yes"、"YES" 都会被认为是正确的肯定回答)。
说明/提示
在第一个测试用例中,你可以从顶点 $3$ 开始打败该顶点上的怪物,然后依次前往顶点 $2$、$1$,打败它们。然后返回顶点 $3$,再前往顶点 $4$,打败该顶点上的怪物。
在第三个测试用例中,如果你从顶点 $1$ 开始,则无法到达顶点 $4$。同样,如果你从顶点 $4$ 开始,则无法到达顶点 $1$、$2$ 和 $3$。
由 ChatGPT 4.1 翻译