CF2046D.For the Emperor!

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

在古罗马,为了击败野蛮人,制定了一项计划,但要实施该计划,每个城市都必须得到通知。

罗马帝国的北部由 nn 个城市组成,这些城市通过 mm 条单向道路相连。起初,第 ii 个城市有 aia_i 名信使,每名信使可以沿着现有的道路自由地在城市间移动。一名信使可以携带一份计划副本,并在他访问的城市中传达信息,并且可以在他当前所在的城市为其他信使制作无限多的副本。

开始时,你需要制作一定数量的计划,并将它们交给选定的信使。你的目标是确保每座城市都被携带计划的信使访问过。找出最初需要制作的计划的最小数量,以确保信使能够将计划送到每一个城市,或者确定根本无法做到这一点。

输入格式

每个测试数据包含多个测试用例。第一行包含一个整数 tt(1≤t≤1001 \le t \le 100),表示测试用例的数量。接下来是各测试用例的描述。

每个测试用例的第一行包含两个整数 nn 和 mm(2≤n≤2002 \le n \le 200,1≤m≤8001 \le m \le 800)—— 分别表示城市的数量和道路的数量。

第二行包含 nn 个非负整数 a1,a2,…,ana_1, a_2, \ldots, a_n(0≤ai≤n0 \le a_{i} \le n)—— 分别表示每个城市初始拥有的信使数量。

接下来的 mm 行每行包含两个整数 uu 和 vv(1≤u,v≤n,u≠v1 \le u,v \le n, u \ne v),表示从城市 uu 到城市 vv 有一条单向道路。道路可能会重复出现。

保证所有测试用例中 nn 的总和不超过 200200。保证所有测试用例中 mm 的总和不超过 800800。

输出格式

对于每个测试用例,输出一行包含一个整数 —— 表示最初需要给信使的计划副本的最小数量,如果不可能通知到所有城市,则输出 −1-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测评打分。不知道怎么写?

首页