A6510 | [CSP-S 2025] 道路修复
来源CSP-S / 2025
时间限制3s
内存限制1024MB
通过 / 提交0/0
题目描述
$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$ 座城市两两连通的最小费用。
然而,近期由于一场大地震,所有 $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$ 个乡镇进行城市化改造的费用与在该乡镇与原有的城市间建造道路的费用。
输入的第 $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
输入 #2
见选手目录下的 `road/road2.in` 与 `road/road2.ans`。该样例满足测试点 11,12 的约束条件。
输出 #2
见选手目录下的 `road/road2.in` 与 `road/road2.ans`。该样例满足测试点 11,12 的约束条件。
输入 #3
见选手目录下的 `road/road3.in` 与 `road/road4.ans`。该样例满足测试点 13,14 的约束条件。
输出 #3
见选手目录下的 `road/road3.in` 与 `road/road4.ans`。该样例满足测试点 13,14 的约束条件。
输入 #4
见选手目录下的 `road/road4.in` 与 `road/road4.ans`。该样例满足测试点 15,16 的约束条件。
输出 #4
见选手目录下的 `road/road4.in` 与 `road/road4.ans`。该样例满足测试点 15,16 的约束条件。
样例 1 解释
C 国政府可以选择修复第 $3$ 条和第 $4$ 条道路,然后将第 $1$ 个乡镇进行城市化改造,并建造它与第 $1,3$ 座城市间的道路,总费用为 $5 + 4 + 1 + 1 + 2 = 13$。可以证明,不存在比 $13$ 更小的费用能使原有的 $4$ 座城市两两连通。
数据范围
对于所有测试数据,保证:
- $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$;
- 任意两座原有的城市都能通过若干条原有的道路相互到达。
测试点编号及约束
| 测试点编号 | $n \leq$ | $m \leq$ | $k \leq$ | 特殊性质 |
|---|---|---|---|---|
| $1\sim 4$ | $10^4$ | $10^6$ | $0$ | 无 |
| $5, 6$ | $10^3$ | $10^5$ | $5$ | A |
| $7, 8$ | $10^3$ | $10^5$ | $5$ | 无 |
| $9, 10$ | $10^3$ | $10^6$ | $5$ | A |
| $11, 12$ | $10^3$ | $10^6$ | $5$ | 无 |
| $13, 14$ | $10^3$ | $10^6$ | $10$ | A |
| $15, 16$ | $10^3$ | $10^6$ | $10$ | 无 |
| $17, 18$ | $10^4$ | $10^6$ | $5$ | A |
| $19, 20$ | $10^4$ | $10^6$ | $5$ | 无 |
| $21\sim 25$ | $10^4$ | $10^6$ | $10$ | 无 |
特殊性质 A:对于所有 $1 \leq j \leq k$,均有 $c_j = 0$ 且均存在 $1 \leq i \leq n$ 满足 $a_{j,i} = 0$。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?