题目名称 4197. [CSP-S 2025 T2]道路修复
输入输出 road.in/out
难度等级 ★★★
时间限制 1500 ms (1.5 s)
内存限制 512 MiB
测试数据 25
题目来源 Gravatarsyzhaoss 于2025-11-01加入
开放分组 全部用户
提交状态
分类标签
NOIP/CSP 并查集 最小生成树
查看题解 分享题解
通过:12, 提交:54, 通过率:22.22%
Gravatar梦那边的美好TE 100 8.987 s 30.19 MiB C++
Gravatar梦那边的美好ET 100 9.078 s 12.84 MiB C++
Gravatarsyzhaoss 100 9.277 s 13.00 MiB C++
Gravatar李金泽 100 9.728 s 19.49 MiB C++
Gravatar李金泽 100 9.904 s 19.73 MiB C++
Gravatar郑霁桓 100 10.226 s 13.13 MiB C++
Gravatar梧叶已同秋雨去 100 10.485 s 19.33 MiB C++
Gravatar会挽弯弓满月 100 11.241 s 22.89 MiB C++
Gravatarhsl_beat 100 11.356 s 22.24 MiB C++
Gravatar我常常追忆未来 100 12.320 s 23.26 MiB C++
关于 道路修复 的近10条评论(全部评论)
如果没加 MST 的剪枝,大常数代码会挂到 80
Gravatar梦那边的美好TE
2025-11-06 18:02 7楼
void merge(int x,int y){
fa[x]=y;
return;
}
48pts->0
Gravatar梦那边的美好CE
2025-11-04 20:23 6楼
考场上写法期望40~60分 结果洛谷88 云斗80 我的心就像过山车
Gravatarhsl_beat
2025-11-02 23:22 5楼
坏事了,考场上用的算法就4分
Gravatar金牌教师王艳芳
2025-11-02 23:06 4楼
最地狱的一题
Gravatar金牌教师王艳芳
2025-11-02 22:50 3楼
ee
Gravatarhsl_beat
2025-11-02 22:34 2楼
申请加大时限 1s对于cogs的机子太短了
Gravatarhsl_beat
2025-11-02 22:32 1楼

4197. [CSP-S 2025 T2]道路修复

★★★   输入文件:road.in   输出文件:road.out   简单对比
时间限制:1.5 s   内存限制:512 MiB

【题目描述】

C 国的交通系统由 $n$ 座城市与 $m$ 条连接两座城市的双向道路构成,第 $i$ ($1 \leq i \leq m$) 条道路连接城市 $u_i$ 和 $v_i$。任意两座城市都能通过若干条道路相互到达。

然而,近期由于一场大地震,所有 $m$ 条道路都被破坏了,修复第 $i$ ($1 \leq i \leq m$) 条道路的费用为 $w_i$。与此同时,C 国还有 $k$ 个准备进行城市化改造的乡镇。对于第 $j$ ($1 \leq j \leq k$) 个乡镇,C 国对其进行城市化改造的费用为 $c_j$。在城市化改造完第 $j$ ($1 \leq j \leq k$) 个乡镇后,可以在这个乡镇与原来的 $n$ 座城市间建造若干条道路,其中在它与第 $i$ ($1 \leq i \leq n$) 座城市间建造一条道路的费用为 $a_{j,i}$。C 国可以在这 $k$ 个乡镇中选择任意多个进行城市化改造,也可以不选择任何乡镇进行城市化改造。

为尽快恢复城市间的交通,C 国政$ $府希望以最低的费用将原有的 $n$ 座城市两两连通,也即任意两座原有的城市都能通过若干条修复或新建造的道路相互到达。你需要帮助他们求出,将原有的 $n$ 座城市两两连通的最小费用。

【输入格式】

输入的第一行包含三个非负整数 $n, m, k$,分别表示原有的城市数量、道路数量和准备进行城市化改造的乡镇数量。

输入的第 $i+1$ ($1 \leq i \leq m$) 行包含三个非负整数 $u_i, v_i, w_i$,表示第 $i$ 条道路连接的两座城市与修复该道路的费用。

输入的第 $j+m+1$ ($1 \leq j \leq k$) 行包含 $n+1$ 个非负整数 $c_j, a_{j,1}, a_{j,2}, \ldots, a_{j,n}$,分别表示将第 $j$ 个乡镇进行城市化改造的费用与在该乡镇与原有的城市间建造道路的费用。

【输出格式】

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

【样例1输入】

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

【样例1输出】

13

【样例1说明】

C 国政$ $府可以选择修复第 $3$ 条和第 $4$ 条道路,然后将第 $1$ 个乡镇进行城市化改造,并建造它与第 $1,3$ 座城市间的道路,总费用为 $5 + 4 + 1 + 1 + 2 = 13$。可以证明,不存在比 $13$ 更小的费用能使原有的 $4$ 座城市两两连通。

【样例2,3,4】

样例下载

样例2满足测试点 $11,12$ 的约束条件。

样例3满足测试点 $13,14$ 的约束条件。

样例4满足测试点 $15,16$ 的约束条件。

【数据规模与约定】

对于所有测试数据,保证:

$1 \leq n \leq 10^4$,$1 \leq m \leq 10^6$,$0 \leq k \leq 10$;

对于所有 $1 \leq i \leq m$,均有 $1 \leq u_i, v_i \leq n$, $u_i \neq v_i$ 且 $0 \leq w_i \leq 10^9$;

对于所有 $1 \leq j \leq k$,均有 $0 \leq c_j \leq 10^9$;

对于所有 $1 \leq j \leq k$,$1 \leq i \leq n$, 均有 $0 \leq a_{j,i} \leq 10^9$;

任意两座原有的城市都能通过若干条原有的道路相互到达。

特殊性质 A:对于所有 $1 \leq j \leq k$,均有 $c_j = 0$ 且均存在 $1 \leq i \leq n$ 满足 $a_{j,i} = 0$。