Олимпиадный тренинг

Задача . E. Монстры


Вам дан неориентированный граф с \(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 \cdot 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 \cdot 10^5\).

Выходные данные

Для каждого наборов входных данных выведите «YES», если вы можете победить всех монстров, и «NO» иначе.

Вы можете выводить каждую букву в любом регистре (строчную или заглавную). Например, строки «yEs», «yes», «Yes» и «YES» будут приняты как положительный ответ.

Примечание

В первом наборе входных данных мы можем начать с вершины \(3\), победить монстра в ней, затем перейти в вершины \(2\), \(1\) в этом порядке, победив монстров в них. Затем вернуться к вершине \(3\) и пойти к вершине \(4\), победив в ней монстра.

В третьем наборе входных данных нет пути к вершине \(4\), если мы начинаем с вершины \(1\). Также нет пути к вершинам \(1\), \(2\), \(3\), если мы начнем с вершины \(4\).


Примеры
Входные данныеВыходные данные
1 5
4 3
2 1 0 3
1 2
2 3
3 4
6 6
0 1 2 3 0 1
1 2
2 3
3 4
4 5
4 6
5 6
4 3
0 1 2 0
1 2
2 3
1 3
4 6
1 1 1 0
1 2
3 2
4 3
2 4
4 1
1 3
5 5
0 1 3 2 0
1 2
2 3
3 4
4 5
3 5
YES
YES
NO
YES
NO

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w643
Комментарий учителя