CF1369E DeadLee
题目描述
Lee 买了一些晚餐的食物,但 Lee 的朋友们吃饭的方式非常危险。Lee 非常害怕,他不想死,至少在看到 Online IOI 2020 之前……
现在有 $n$ 种不同类型的食物,以及 $m$ 个 Lee 的好朋友。Lee 拥有 $w_i$ 盘第 $i$ 种类型的食物,每个朋友有两种不同的最喜欢的食物类型:第 $i$ 个朋友最喜欢的食物类型是 $x_i$ 和 $y_i$($x_i \ne y_i$)。
Lee 将依次叫朋友们进来。被叫到的朋友会去厨房,尝试各吃一盘他最喜欢的两种食物。每个朋友只会进厨房一次。
唯一的问题是:如果某个朋友能吃到至少一盘食物(总共),那么他就不会伤害 Lee。但如果他最喜欢的两种食物都没有剩下(即 $x_i$ 和 $y_i$ 都没有),他就会吃掉 Lee $\times\_\times$。
Lee 可以选择叫朋友们的顺序,他想知道自己能否安全度过晚餐。如果可以,他还想知道一种可行的叫人顺序。
输入格式
第一行包含两个整数 $n$ 和 $m$($2 \le n \le 10^5$,$1 \le m \le 2 \cdot 10^5$),分别表示食物种类数和 Lee 的朋友数。
第二行包含 $n$ 个整数 $w_1, w_2, \ldots, w_n$($0 \le w_i \le 10^6$),表示每种食物的盘数。
接下来的 $m$ 行,每行包含两个整数 $x_i$ 和 $y_i$($1 \le x_i, y_i \le n$,$x_i \ne y_i$),表示第 $i$ 个朋友最喜欢的两种食物类型。
输出格式
如果 Lee 能安全度过晚餐,输出 ALIVE(不区分大小写);否则输出 DEAD(不区分大小写)。
如果 Lee 能安全度过晚餐,接着输出一种可行的叫朋友的顺序。如果有多种可行顺序,输出任意一种即可。
说明/提示
在第一个样例中,以下任意一种叫朋友的顺序都是正确的:$[1, 3, 2]$,$[3, 1, 2]$,$[2, 3, 1]$,$[3, 2, 1]$。
在第二个样例中,Lee 应该先叫第二个朋友(他会吃掉一盘第 $1$ 种食物),然后再叫第一个朋友(他会吃掉一盘第 $2$ 种食物)。如果 Lee 先叫第一个朋友,他会吃掉一盘第 $1$ 种和一盘第 $2$ 种食物,第二个朋友就没有食物可吃了。
由 ChatGPT 4.1 翻译