#df2090. 片区划分
片区划分
片区划分
题目描述
A 市有 个村庄(村庄编号为 ),现准备将 个村庄划分为 个区(一个区中要有至少 个村庄),同一个区中的村庄要求有道路可以互相到达(不一定要直达,比如:A 村要去 C 村,可以先先去 B 村,再去 C 村)。
为了节约成本,在划分之前,相关规划部门调研了村庄之间修路的成本,本次调研,共调研到了 条道路的建设成本。
假设所有村庄之间目前没有任何道路,如果要将 个村庄划分为 个区,请求出最少的修路成本?
输入格式
第一行有三个数 (,,)。
接下来 行每行三个数 ,表示编号为 村到编号为 村修路的费用。(,)
测试数据保证 村到 村的道路只有 条。
输出格式
输出一个整数,代表最少的修路成本。
如果按照当前的调研数据,无法将 个村庄划分为 个区,请输出No Answer。(比如,假设有 个村庄,只有 条道路的建设数据,是无法将 个村庄划分为 个区或者 个区的)。
样例输入 #1
3 1 2
1 2 1
样例输出 #1
1
样例解释
号村到 号村修路成本为 。
样例要求将 个村划分为 个区,只需要修 条路就可以将 个村合并为 个区,加上剩余的 个村,形成了 个区。
因此,样例中只需要在 号村和 号村之间修路,就可以实现划分 个区的目标。
数据范围
- ,,
- ,
- 保证无重边( 村到 村的道路只有 条)
知识点与难度
本题涉及的知识点从属于 图论(并查集 / 最小生成树),难度等级:入门。
测试点分布
| Subtask | 分值 | 测试点编号 | 说明 |
|---|---|---|---|
| 0 | 10 | 1~2 | 样例 |
| 1 | 20 | 3~8 | 小规模 n≤10 / 特殊: 全免费边 / 特殊: k=1 / 特殊: k=n |
| 2 | 15 | 9~11 | Hack: n=1 k=1 / Hack: m 不足 No Answer / Hack: 大权值累加 |
| 3 | 30 | 12~20 | 中规模 n≈100~500 / 大规模 n≈1000 m≈10000 压力 |
| 4 | 25 | 21~25 | 随机 n=1~1000 回归 |