CF2046D.For the Emperor!
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
在古罗马,为了击败野蛮人,制定了一项计划,但要实施该计划,每个城市都必须得到通知。
罗马帝国的北部由 n 个城市组成,这些城市通过 m 条单向道路相连。起初,第 i 个城市有 ai 名信使,每名信使可以沿着现有的道路自由地在城市间移动。一名信使可以携带一份计划副本,并在他访问的城市中传达信息,并且可以在他当前所在的城市为其他信使制作无限多的副本。
开始时,你需要制作一定数量的计划,并将它们交给选定的信使。你的目标是确保每座城市都被携带计划的信使访问过。找出最初需要制作的计划的最小数量,以确保信使能够将计划送到每一个城市,或者确定根本无法做到这一点。
输入格式
每个测试数据包含多个测试用例。第一行包含一个整数 t(1≤t≤100),表示测试用例的数量。接下来是各测试用例的描述。
每个测试用例的第一行包含两个整数 n 和 m(2≤n≤200,1≤m≤800)—— 分别表示城市的数量和道路的数量。
第二行包含 n 个非负整数 a1,a2,…,an(0≤ai≤n)—— 分别表示每个城市初始拥有的信使数量。
接下来的 m 行每行包含两个整数 u 和 v(1≤u,v≤n,u=v),表示从城市 u 到城市 v 有一条单向道路。道路可能会重复出现。
保证所有测试用例中 n 的总和不超过 200。保证所有测试用例中 m 的总和不超过 800。
输出格式
对于每个测试用例,输出一行包含一个整数 —— 表示最初需要给信使的计划副本的最小数量,如果不可能通知到所有城市,则输出 −1。
输入输出样例
输入#1
2 7 6 2 1 0 1 2 3 4 1 2 1 3 2 4 2 5 3 6 3 7 4 4 1 1 1 1 1 2 1 3 2 4 3 4
输出#1
2 2
输入解题思路,AI测评打分。不知道怎么写?