CF1515F.Phoenix and Earthquake
省选/NOI-
通过率:0%
时间限制:3.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Phoenix's homeland, the Fire Nation had n cities that were connected by m roads, but the roads were all destroyed by an earthquake. The Fire Nation wishes to repair n−1 of these roads so that all the cities are connected again.
The i-th city has ai tons of asphalt. x tons of asphalt are used up when repairing a road, and to repair a road between i and j, cities i and j must have at least x tons of asphalt between them. In other words, if city i had ai tons of asphalt and city j had aj tons, there would remain ai+aj−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.
凤凰的故乡——火之国,原本有 n 座城市,由 m 条道路连接;但一场地震将所有道路尽数摧毁。火之国希望修复其中 n−1 条道路,使得所有城市重新连通。
第 i 座城市拥有 ai 吨沥青。修复一条道路需消耗 x 吨沥青;而要修复城市 i 与城市 j 之间的道路,城市 i 和城市 j 当前所拥有的沥青总量必须至少为 x 吨。换言之,若城市 i 拥有 ai 吨沥青、城市 j 拥有 aj 吨沥青,则修复它们之间的道路后,剩余沥青总量为 ai+aj−x 吨。需要注意:沥青仅可在已修复道路连接的城市之间运输。
请判断是否可能使所有城市连通;若可行,请输出任意一种可行的道路修复顺序。
输入格式
The first line contains integers n, m, and x (2≤n≤3⋅105; n−1≤m≤3⋅105; 1≤x≤109) — the number of cities, number of roads, and amount of asphalt needed to repair one road.
The next line contains n space-separated integer ai (0≤ai≤109) — the amount of asphalt initially at city i.
The next m lines contains two integers xi and yi (xi=yi; 1≤xi,yi≤n) — the cities connected by the i-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.
第一行包含三个整数 n、m 和 x(2≤n≤3⋅105;n−1≤m≤3⋅105;1≤x≤109),分别表示城市的数量、道路的数量,以及修复一条道路所需的沥青量。
第二行包含 n 个用空格分隔的整数 ai(0≤ai≤109),表示城市 i 最初拥有的沥青量。
接下来的 m 行,每行包含两个整数 xi 和 yi(xi=yi;1≤xi,yi≤n),表示第 i 条道路所连接的两个城市。保证任意两个城市之间至多存在一条道路,且地震前所有城市原本是连通的。
输出格式
If it is not possible to connect all the cities, print NO. Otherwise, print YES followed by n−1 integers e1,e2,…,en−1, the order in which the roads should be repaired. ei is the index of the i-th road to repair. If there are multiple solutions, print any.
如果无法连接所有城市,则输出 NO。否则,输出 YES,后接 n−1 个整数 e1,e2,…,en−1,表示应按此顺序修复道路。其中 ei 表示第 i 条待修复道路的索引。若存在多种解,输出任意一种即可。
输入输出样例
输入#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 3 is repaired, connecting cities 3 and 4. City 4 originally had 4 tons of asphalt. After this road is constructed, 3 tons remain.
- Road 2 is repaired, connecting cities 2 and 3. The asphalt from city 4 can be transported to city 3 and used for the road. 2 tons remain.
- Road 1 is repaired, connecting cities 1 and 2. The asphalt is transported to city 2 and used for the road. 1 ton remain.
- Road 4 is repaired, connecting cities 4 and 5. The asphalt is transported to city 4 and used for the road. No asphalt remains.
All the cities are now connected.
In the second example, cities 1 and 2 use all their asphalt together to build the road. They each have 1 ton, so together they have 2 tons, which is enough.
In the third example, there isn't enough asphalt to connect cities 1 and 2.
在第一个例子中,道路按以下顺序修复:
- 修复第 3 条道路,连接城市 3 和 4。城市 4 最初有 4 吨沥青。该道路修建完成后,剩余 3 吨。
- 修复第 2 条道路,连接城市 2 和 3。城市 4 的沥青可运输至城市 3 并用于修建该道路,剩余 2 吨。
- 修复第 1 条道路,连接城市 1 和 2。沥青被运至城市 2 并用于修建该道路,剩余 1 吨。
- 修复第 4 条道路,连接城市 4 和 5。沥青被运至城市 4 并用于修建该道路,沥青耗尽。
此时所有城市均已连通。
在第二个例子中,城市 1 和 2 共同使用其全部沥青来修建该道路。它们各自拥有 1 吨沥青,合计 2 吨,足以完成修建。
在第三个例子中,城市 1 和 2 所拥有的沥青总量不足以修建连接它们的道路。
输入解题思路,AI测评打分。不知道怎么写?