拆除地毯


Submit solution

Points: 100
Time limit: 1.0s
Memory limit: 80M

Author:
Problem type
Allowed languages
C, C++

拆地毯

直观理解

会场里有 \(n\) 个"关键区域",用 \(m\) 条无向地毯(边)把它们连接起来。 每条地毯用三个数表示:\((u, v, w)\),意思是"在 \(u\) 区域和 \(v\) 区域之间铺了一条美丽度为 \(w\) 的地毯"。

现在典礼结束,要把地毯掉。但为了节省,允许最多保留 \(K\) 条地毯。 唯一的硬性要求:保留下来的地毯不能形成环——也就是保留后的图的每个连通块都要是树(或空)。 问:在满足"不成环"和"最多 \(K\) 条"这两个条件下,能让美丽度总和最大的值是多少?

关键词翻译:

  • "不成环" = 任意连通块中,任意两点之间的简单路径唯一(等价于无环)。
  • "最多 \(K\) 条" = 可以选少于 \(K\) 条,也可以正好 \(K\) 条。

输入格式

  • 第一行:三个正整数 \(n, m, K\)
  • 接下来 \(m\) 行:每行三个正整数 \(u, v, w\),表示一条无向地毯连接 \(u\) 与 \(v\),美丽度为 \(w\)

输出格式

  • 输出一个整数:在满足"无环"且"保留条数 ≤ \(K\)"前提下,选出的地毯美丽度总和的最大值

样例

输入

5 4 3
1 2 10
1 3 9
2 3 7
4 5 3

输出

22

说明 可以保留第 \(1\), \(2\), \(4\) 条地毯,总和为 \(10 + 9 + 3 = 22\),且不成环。 如果保留第 \(1\), \(2\), \(3\) 条地毯,总和 \(10 + 9 + 7 = 26\),但 \(1\text{-}2\text{-}3\) 形成了环,不符合要求。


约束

  • \(1 \le n, m, K \le 10^5\)
  • \(1 \le u, v \le n\),\(u \ne v\)
  • 边为无向图

Comments

There are no comments at the moment.