#df2090. 片区划分

片区划分

片区划分

题目描述

A 市有 nn 个村庄(村庄编号为 1n1 \sim n),现准备将 nn 个村庄划分为 kk 个区(一个区中要有至少 11 个村庄),同一个区中的村庄要求有道路可以互相到达(不一定要直达,比如:A 村要去 C 村,可以先先去 B 村,再去 C 村)。

为了节约成本,在划分之前,相关规划部门调研了村庄之间修路的成本,本次调研,共调研到了 mm 条道路的建设成本。

假设所有村庄之间目前没有任何道路,如果要将 nn 个村庄划分为 kk 个区,请求出最少的修路成本?

输入格式

第一行有三个数 n,m,kn,m,k1n10001 \le n \le 10001m100001 \le m \le 100001k101 \le k \le 10)。

接下来 mm 行每行三个数 x,y,lx,y,l,表示编号为 xx 村到编号为 yy 村修路的费用。(1x,yn1 \le x,y \le n0l<100000 \le l < 10000

测试数据保证 xx 村到 yy 村的道路只有 11 条。

输出格式

输出一个整数,代表最少的修路成本。

如果按照当前的调研数据,无法将 nn 个村庄划分为 kk 个区,请输出No Answer。(比如,假设有 55 个村庄,只有 22 条道路的建设数据,是无法将 55 个村庄划分为 22 个区或者 11 个区的)。

样例输入 #1

3 1 2
1 2 1

样例输出 #1

1

样例解释

11 号村到 22 号村修路成本为 11

样例要求将 33 个村划分为 22 个区,只需要修 11 条路就可以将 22 个村合并为 11 个区,加上剩余的 11 个村,形成了 22 个区。

因此,样例中只需要在 11 号村和 22 号村之间修路,就可以实现划分 22 个区的目标。

数据范围

  • 1n10001 \le n \le 10001m100001 \le m \le 100001k101 \le k \le 10
  • 1x,yn1 \le x,y \le n0l<100000 \le l < 10000
  • 保证无重边(xx 村到 yy 村的道路只有 11 条)

知识点与难度

本题涉及的知识点从属于 图论(并查集 / 最小生成树),难度等级:入门


测试点分布

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 回归