CF1515F.Phoenix and Earthquake

省选/NOI-

通过率:0%

时间限制:3.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

Phoenix's homeland, the Fire Nation had nn cities that were connected by mm roads, but the roads were all destroyed by an earthquake. The Fire Nation wishes to repair n−1n-1 of these roads so that all the cities are connected again.

The ii-th city has aia_i tons of asphalt. xx tons of asphalt are used up when repairing a road, and to repair a road between ii and jj, cities ii and jj must have at least xx tons of asphalt between them. In other words, if city ii had aia_i tons of asphalt and city jj had aja_j tons, there would remain ai+aj−xa_i+a_j-x tons after repairing the road between them. Asphalt can be moved between cities if the road between them is already repaired.

Please determine if it is possible to connect all the cities, and if so, output any sequence of roads to repair.

凤凰的故乡——火之国,原本有 nn 座城市,由 mm 条道路连接;但一场地震将所有道路尽数摧毁。火之国希望修复其中 n−1n-1 条道路,使得所有城市重新连通。

第 ii 座城市拥有 aia_i 吨沥青。修复一条道路需消耗 xx 吨沥青;而要修复城市 ii 与城市 jj 之间的道路,城市 ii 和城市 jj 当前所拥有的沥青总量必须至少为 xx 吨。换言之,若城市 ii 拥有 aia_i 吨沥青、城市 jj 拥有 aja_j 吨沥青,则修复它们之间的道路后,剩余沥青总量为 ai+aj−xa_i + a_j - x 吨。需要注意:沥青仅可在已修复道路连接的城市之间运输。

请判断是否可能使所有城市连通;若可行,请输出任意一种可行的道路修复顺序。

输入格式

The first line contains integers nn, mm, and xx (2≤n≤3⋅1052 \le n \le 3 \cdot 10^5; n−1≤m≤3⋅105n-1 \le m \le 3 \cdot 10^5; 1≤x≤1091 \le x \le 10^9) — the number of cities, number of roads, and amount of asphalt needed to repair one road.

The next line contains nn space-separated integer aia_i (0≤ai≤1090 \le a_i \le 10^9) — the amount of asphalt initially at city ii.

The next mm lines contains two integers xix_i and yiy_i (xi≠yix_i\ne y_i; 1≤xi,yi≤n1 \le x_i, y_i \le n) — the cities connected by the ii-th road. It is guaranteed that there is at most one road between each pair of cities, and that the city was originally connected before the earthquake.

第一行包含三个整数 nn、mm 和 xx(2≤n≤3⋅1052 \le n \le 3 \cdot 10^5;n−1≤m≤3⋅105n-1 \le m \le 3 \cdot 10^5;1≤x≤1091 \le x \le 10^9),分别表示城市的数量、道路的数量,以及修复一条道路所需的沥青量。

第二行包含 nn 个用空格分隔的整数 aia_i(0≤ai≤1090 \le a_i \le 10^9),表示城市 ii 最初拥有的沥青量。

接下来的 mm 行,每行包含两个整数 xix_i 和 yiy_i(xi≠yix_i\ne y_i;1≤xi,yi≤n1 \le x_i, y_i \le n),表示第 ii 条道路所连接的两个城市。保证任意两个城市之间至多存在一条道路,且地震前所有城市原本是连通的。

输出格式

If it is not possible to connect all the cities, print NO. Otherwise, print YES followed by n−1n-1 integers e1,e2,…,en−1e_1, e_2, \dots, e_{n-1}, the order in which the roads should be repaired. eie_i is the index of the ii-th road to repair. If there are multiple solutions, print any.

如果无法连接所有城市,则输出 NO。否则,输出 YES,后接 n−1n-1 个整数 e1,e2,…,en−1e_1, e_2, \dots, e_{n-1},表示应按此顺序修复道路。其中 eie_i 表示第 ii 条待修复道路的索引。若存在多种解,输出任意一种即可。

输入输出样例

  • 输入#1

    5 4 1
    0 0 0 4 0
    1 2
    2 3
    3 4
    4 5

    输出#1

    YES
    3
    2
    1
    4
  • 输入#2

    2 1 2
    1 1
    1 2

    输出#2

    YES
    1
  • 输入#3

    2 1 2
    0 1
    1 2

    输出#3

    NO
  • 输入#4

    5 6 5
    0 9 4 0 10
    1 2
    1 3
    2 3
    3 4
    1 4
    4 5

    输出#4

    YES
    6
    4
    1
    2

说明/提示

In the first example, the roads are repaired in the following order:

  • Road 33 is repaired, connecting cities 33 and 44. City 44 originally had 44 tons of asphalt. After this road is constructed, 33 tons remain.
  • Road 22 is repaired, connecting cities 22 and 33. The asphalt from city 44 can be transported to city 33 and used for the road. 22 tons remain.
  • Road 11 is repaired, connecting cities 11 and 22. The asphalt is transported to city 22 and used for the road. 11 ton remain.
  • Road 44 is repaired, connecting cities 44 and 55. The asphalt is transported to city 44 and used for the road. No asphalt remains.

All the cities are now connected.

In the second example, cities 11 and 22 use all their asphalt together to build the road. They each have 11 ton, so together they have 22 tons, which is enough.

In the third example, there isn't enough asphalt to connect cities 11 and 22.

在第一个例子中,道路按以下顺序修复:

  • 修复第 33 条道路,连接城市 33 和 44。城市 44 最初有 44 吨沥青。该道路修建完成后,剩余 33 吨。
  • 修复第 22 条道路,连接城市 22 和 33。城市 44 的沥青可运输至城市 33 并用于修建该道路,剩余 22 吨。
  • 修复第 11 条道路,连接城市 11 和 22。沥青被运至城市 22 并用于修建该道路,剩余 11 吨。
  • 修复第 44 条道路,连接城市 44 和 55。沥青被运至城市 44 并用于修建该道路,沥青耗尽。

此时所有城市均已连通。

在第二个例子中,城市 11 和 22 共同使用其全部沥青来修建该道路。它们各自拥有 11 吨沥青,合计 22 吨,足以完成修建。

在第三个例子中,城市 11 和 22 所拥有的沥青总量不足以修建连接它们的道路。

输入解题思路,AI测评打分。不知道怎么写?

首页