CF1346D.Constructing the Dungeon
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
题目翻译
题目大意
Polycarp 正在制作主角可以探索的地牢。
该地牢由 n 个房间组成,由 m 条双向隧道连接,可以通过隧道从其他房间到达每个房间。
房间内有怪物守卫(第 i 个房间内的怪物数量为 ai),隧道内有金币(第 i 条隧道内的金币数量为 wi)。第 i 条双向隧道连接着 vi 和 ui 两个房间。
Polycarp 已经确定了每条隧道中硬币的数量(wi 的值已经已知),现在他试图在房间中放置怪物(ai 的值还未知)。
Polycarp 希望以满足以下两个条件的方式来选择每个房间中怪物的数量:
-
连接 x 和 y 房间的隧道的硬币数量应等于 ax 和 ay 的最小值。也就是说,wi=min(avi,aui)。
-
地牢中的怪物数量越少越好。也就是说, ∑i=1nai 的值是可能的最小值。
帮助 Polycarp 选择 a1,a2,⋯,an,或者告诉他这是不可能的,他必须改变他的地牢计划。
输入格式
第一行包含一个正整数 t(1≤t≤100000),表示测试用例数,然后是测试用例。
每个测试用例的第一行包含两个正整数 n 和 m(2≤n≤200000,n−1≤m≤min(200000,2n(n−1))),分别表示地宫中房间和隧道的数量。
接下来的 m 行,每行描述地宫中的一条隧道。第 i 行包含三个整数 vi,ui,wi(1≤vi≤n,1≤ui≤n,vi=ui,1≤wi≤109),表示连接房间 vi
和 ui 的双向隧道包含 wi 枚硬币。在每个测试用例中,隧道系统都是相连的(通过隧道可以从其他房间到达每个房间)。每对房间最多由一条隧道相连。
所有测试案例中 n 的总和不超过 200000。同样,所有测试案例中 m 的总和也不超过 200000。
输出格式
对于每个测试用例,打印答案如下:
如果无法找到满足所有约束条件的 a1,a2,⋯,an 值,则在单独一行中输出 NO。
否则,第一行输出 YES,第二行输出 n 个整数 a1,a2,⋯,an。如果有多个有效答案,则输出其中任何一个。
输入输出样例
输入#1
3 3 2 1 2 1 2 3 1 5 7 3 2 7 3 4 9 1 5 5 1 2 5 4 1 5 4 2 7 3 1 5 4 4 1 2 5 3 2 2 4 1 3 3 4 4
输出#1
YES 1 1 1 YES 5 7 9 9 5 NO
输入解题思路,AI测评打分。不知道怎么写?