Codeforces Round 652 (Div. 2) |
---|
Закончено |
Ли приобрел некоторой еды на обед, но приглашать друзей Ли на обед смертельно опасно. Ли напуган, он не хочет умирать, хотя бы пока не увидит Online IOI 2020...
Всего есть $$$n$$$ различных видов еды и $$$m$$$ лучших друзей Ли. У Ли есть $$$w_i$$$ тарелок $$$i$$$-го вида еды, и у каждого друга Ли есть два любимых вида еды: любимые блюда $$$i$$$-го друга — это $$$x_i$$$ и $$$y_i$$$ ($$$x_i \ne y_i$$$).
Ли начнет вызывать своих друзей по одному. Каждый, кого вызвали, пойдет на кухню и попытается съесть по одной тарелке каждого из его любимых видов еды. Каждый друг зайдет на кухню ровно один раз.
Но проблема в следующем: если друг съест хотя бы одну тарелку еды (суммарно), то он станет абсолютно безвреден. Но если другу нечего есть (не осталось ни $$$x_i$$$, ни $$$y_i$$$), то он съест самого Ли $$$\times\_\times$$$.
Ли может выбрать, в каком порядке приглашать друзей, а потому Ли хочет понять, может ли он пережить ужин или нет. Также его интересует непосредственно сам порядок.
В первой строке заданы два целых числа $$$n$$$ и $$$m$$$ ($$$2 \le n \le 10^5$$$; $$$1 \le m \le 2 \cdot 10^5$$$) — количество видов еды и количество друзей Ли.
Во второй строке заданы $$$n$$$ целых чисел $$$w_1, w_2, \ldots, w_n$$$ ($$$0 \le w_i \le 10^6$$$) — количество тарелок с едой каждого вида.
В $$$i$$$-й строке из следующих $$$m$$$ строк заданы два целых числа $$$x_i$$$ и $$$y_i$$$ ($$$1 \le x_i, y_i \le n$$$; $$$x_i \ne y_i$$$) — любимые виды еды $$$i$$$-го друга.
Если Ли может пережить обед, выведите ALIVE (регистр букв не важен), иначе выведите DEAD (регистр не важен).
Также, если он может пережить обед, выведите порядок, в котором Ли следует вызывать друзей. Если существует несколько возможных порядков, выведите любой из них.
3 3 1 2 1 1 2 2 3 1 3
ALIVE 3 2 1
3 2 1 1 0 1 2 1 3
ALIVE 2 1
4 4 1 2 0 1 1 3 1 2 2 3 2 4
ALIVE 1 3 2 4
5 5 1 1 1 2 1 3 4 1 2 2 3 4 5 4 5
ALIVE 5 4 1 3 2
4 10 2 4 1 4 3 2 4 2 4 1 3 1 4 1 1 3 3 2 2 1 3 1 2 4
DEAD
В первом примере, любой из следующих порядков друзей будет корректным: $$$[1, 3, 2]$$$, $$$[3, 1, 2]$$$, $$$[2, 3, 1]$$$, $$$[3, 2, 1]$$$.
Во втором примере, Ли следует вызвать второго друга первым (тогда он съест тарелку еды $$$1$$$), а потом и первого друга (этот друг съесть тарелку еды $$$2$$$). Если же Ли вызовет сначала первого друга, то он съесть по одной тарелке еды $$$1$$$ и $$$2$$$, а следовательно другому другу ничего не останется.
Название |
---|