CF2046D For the Emperor!

题目描述

在古罗马,为了击败野蛮人,制定了一项计划,但要实施该计划,每个城市都必须得到通知。 罗马帝国的北部由 $n$ 个城市组成,这些城市通过 $m$ 条单向道路相连。起初,第 $i$ 个城市有 $a_i$ 名信使,每名信使可以沿着现有的道路自由地在城市间移动。一名信使可以携带一份计划副本,并在他访问的城市中传达信息,并且可以在他当前所在的城市为其他信使制作无限多的副本。 开始时,你需要制作一定数量的计划,并将它们交给选定的信使。你的目标是确保每座城市都被携带计划的信使访问过。找出最初需要制作的计划的最小数量,以确保信使能够将计划送到每一个城市,或者确定根本无法做到这一点。

输入格式

每个测试数据包含多个测试用例。第一行包含一个整数 $t$($1 \le t \le 100$),表示测试用例的数量。接下来是各测试用例的描述。 每个测试用例的第一行包含两个整数 $n$ 和 $m$($2 \le n \le 200$,$1 \le m \le 800$)—— 分别表示城市的数量和道路的数量。 第二行包含 $n$ 个非负整数 $a_1, a_2, \ldots, a_n$($0 \le a_{i} \le n$)—— 分别表示每个城市初始拥有的信使数量。 接下来的 $m$ 行每行包含两个整数 $u$ 和 $v$($1 \le u,v \le n, u \ne v$),表示从城市 $u$ 到城市 $v$ 有一条单向道路。道路可能会重复出现。 保证所有测试用例中 $n$ 的总和不超过 $200$。保证所有测试用例中 $m$ 的总和不超过 $800$。

输出格式

对于每个测试用例,输出一行包含一个整数 —— 表示最初需要给信使的计划副本的最小数量,如果不可能通知到所有城市,则输出 $-1$。