题库/S0149

#S0149. 【25CSPS提高组】道路修复

    传统题 难度: 普及+ 标签>一本通Kruskal最小生成树并查集合并与代表元枚举对象、范围与合法性
时间限制1000 ms
内存限制512 MiB
通过率—0 / 0 次提交
题目描述 查看题解 开始编程Alt+E

S0149 · 【25CSPS提高组】道路修复

退出在线编程模式
普及+ 读懂题意,让每一次思考成为成长。
时间限制1000 ms
内存限制512 MiB
通过率—0 / 0 次提交

题目描述

C 国的交通系统由 nn 座城市与 mm 条连接两座城市的双向道路构成,第 i(1≤i≤m)i (1 ≤ i ≤ m)条道路连接城市 uiu_i 和 viv_i。任意两座城市都能通过若干条道路相互到达。 然而,近期由于一场大地震,所有 mm 条道路都被破坏了,修复第 i(1≤i≤m)i (1 ≤ i ≤ m) 条道路的费用为 wiw_i。与此同时,C 国还有 kk 个准备进行城市化改造的乡镇。对于第j(1≤j≤k) j (1 ≤ j ≤ k)个乡镇,C 国对其进行城市化改造的费用为 cjc_j。在城市化改造完第 j(1≤j≤k)j (1 ≤ j ≤ k) 个乡镇后,可以在这个乡镇与原来的 nn 座城市间建造若干条道路,其中在它与第 i(1≤i≤n)i (1 ≤ i ≤ n)座城市间建造一条道路的费用为 aj,ia_{j,i}。C 国可以在这 kk 个乡镇中选择任意多个进行城市化改造,也可以不选择任何乡镇进行城市化改造。 为尽快恢复城市间的交通,C 国政府希望以最低的费用将原有的 nn 座城市两两连通,也即任意两座原有的城市都能通过若干条修复或新建造的道路相互到达。你需要帮助他们求出,将原有的 nn 座城市两两连通的最小费用。

输入

输入的第一行包含三个非负整数 n,m,kn, m, k,分别表示原有的城市数量、道路数量和准备进行城市化改造的乡镇数量。 输入的第 i+1(1≤i≤m)i + 1 (1 ≤ i ≤ m) 行包含三个非负整数 uiu_i, viv_i, wiw_i,表示第 ii 条道路连接的两座城市与修复该道路的费用。 输入的第 j+m+1(1≤j≤k)j + m + 1 (1 ≤ j ≤ k) 行包含 n+1n + 1 个非负整数 cjc_j, aj,1a_{j,1}, aj,2a_{j,2}, . . . , aj,na_{j,n},分别表示将第 jj 个乡镇进行城市化改造的费用与在该乡镇与原有的城市间建造道路的费用。

输出

输出一行一个非负整数,表示将原有的 nn 座城市两两连通的最小费用。

输入样例

4 4 2
1 4 6
2 3 7
4 2 5
4 3 4
1 1 8 2 4
100 1 3 2 4

输出样例

13

提示

【样例 1 解释】 C 国政府可以选择修复第 33 条和第 44 条道路,然后将第 11 个乡镇进行城市化改造,并建造它与第 1,31, 3 座城市间的道路,总费用为 5+4+1+1+2=135 + 4 + 1 + 1 + 2 = 13。可以证明,不存在比 1313 更小的费用能使原有的 44 座城市两两连通。 【数据范围】 对于所有测试数据,保证: • 1≤n≤1041 ≤ n ≤ 10^4,1≤m≤1061 ≤ m ≤ 10^6,0≤k≤100 ≤ k ≤ 10; • 对于所有 1≤i≤m1 ≤ i ≤ m,均有 1≤ui1 ≤ u_i, vi≤nv_i ≤ n,ui≠viu_i≠v_i 且 0≤wi≤1090 ≤ w_i ≤ 10^9; • 对于所有 1≤j≤k1 ≤ j ≤ k,均有 0≤cj≤1090 ≤ c_j ≤ 10^9; • 对于所有 1≤j≤k1 ≤ j ≤ k,1≤i≤n1 ≤ i ≤ n,均有 0≤aj,i≤1090 ≤ a_{j,i} ≤ 10^9; • 任意两座原有的城市都能通过若干条原有的道路相互到达。

测试点编号 n ≤ m ≤ k ≤ 特殊性质
1 ∼ 4 $10^4$ $10^6$ 0 无
5,6 $10^3$ $10^5$ 5 A
7,8 无
9,10 $10^6$A
11,12 无
13,1410 A
15,16 无
17,18 $10^4$ 5A
19,20 无
21∼2510
特殊性质 A:对于所有 $1 ≤ j ≤ k$,均有 $c_j = 0$ 且均存在 $1 ≤ i ≤ n$ 满足 $a_{j,i} = 0$。

评测数据说明

本题使用按题意独立构造、以独立程序核对的训练数据及公开样例,共5个测试点,非原站或官方原始数据。总分100分。