CF1346D.Constructing the Dungeon

普及/提高-

通过率:0%

AC君温馨提醒

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

题目描述

题目翻译

题目大意

Polycarp 正在制作主角可以探索的地牢。

该地牢由 nn 个房间组成,由 mm 条双向隧道连接,可以通过隧道从其他房间到达每个房间。

房间内有怪物守卫(第 ii 个房间内的怪物数量为 aia_i),隧道内有金币(第 ii 条隧道内的金币数量为 wiw_i)。第 ii 条双向隧道连接着 viv_i 和 uiu_i 两个房间。

Polycarp 已经确定了每条隧道中硬币的数量(wiw_i 的值已经已知),现在他试图在房间中放置怪物(aia_i 的值还未知)。

Polycarp 希望以满足以下两个条件的方式来选择每个房间中怪物的数量:

  1. 连接 xx 和 yy 房间的隧道的硬币数量应等于 axa_x 和 aya_y 的最小值。也就是说,wi=min⁡(avi,aui)w_i=\min(a_{v_i},a_{u_i})。

  2. 地牢中的怪物数量越少越好。也就是说, ∑i=1nai\sum_{i=1}^n a_i 的值是可能的最小值。

帮助 Polycarp 选择 a1,a2,⋯ ,ana_1,a_2,\cdots,a_n,或者告诉他这是不可能的,他必须改变他的地牢计划。

输入格式

第一行包含一个正整数 tt(1≤t≤1000001\le t\le100000),表示测试用例数,然后是测试用例。

每个测试用例的第一行包含两个正整数 nn 和 mm(2≤n≤200000,n−1≤m≤min⁡(200000,n(n−1)2)2\le n\le200000,n−1\le m\le \min(200000,\dfrac{n(n−1)}2)),分别表示地宫中房间和隧道的数量。

接下来的 mm 行,每行描述地宫中的一条隧道。第 ii 行包含三个整数 vi,ui,wiv_i,u_i,w_i(1≤vi≤n,1≤ui≤n,vi≠ui,1≤wi≤1091\le v_i\le n,1\le u_i\le n,v_i\ne u_i, 1\le w_i\le10^9),表示连接房间 viv_i
和 uiu_i 的双向隧道包含 wiw_i 枚硬币。在每个测试用例中,隧道系统都是相连的(通过隧道可以从其他房间到达每个房间)。每对房间最多由一条隧道相连。

所有测试案例中 nn 的总和不超过 200000200000。同样,所有测试案例中 mm 的总和也不超过 200000200000。

输出格式

对于每个测试用例,打印答案如下:

如果无法找到满足所有约束条件的 a1,a2,⋯ ,ana_1,a_2,\cdots,a_n 值,则在单独一行中输出 NO。

否则,第一行输出 YES,第二行输出 nn 个整数 a1,a2,⋯ ,ana_1,a_2,\cdots,a_n。如果有多个有效答案,则输出其中任何一个。

输入输出样例

  • 输入#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测评打分。不知道怎么写?

首页