SP1461 DRAGON - Greedy Hydra

题目描述

九头蛇是一种非常贪婪的生物。它出生时有 9 个头,随着成长会不断长出更多的新头,不过也因为老化,旧的头会掉落。 某天,一只拥有 $M$ 个头的九头蛇发现了一棵拥有 $N$ 个果实的树。它欣喜若狂,迫不及待想要吞下所有果实。由于有 $M$ 个头,它必须把这 $N$ 个果实划分为 $M$ 组,确保每组至少有 1 个果实,这样每个头就能吃掉一组果实。 在这些头中,最大的头被称为“老大”。“老大”必须恰好吃掉 $K$ 个果实,其中一定要包含最大的果实。果实编号为 1 到 $N$,编号为 1 的果实是最大的。这 $N$ 个果实通过 $N-1$ 条枝条连接,任何两个果实之间都有路径通过这些枝条连接起来。 如果两颗通过枝条连接的果实被分配到不同的组,对应的两个头就会破坏那条枝条来吃掉这两个果实;否则,这对果实会被同一个头吃掉,而枝条则保持完整。因为吃掉枝条会带来不适,每条枝条都有一个不适度值,九头蛇的总不适度值就是所有被破坏枝条的不适度值之和。 你的任务是帮助九头蛇将总不适度值降到最低。 下图是一个示例: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/SP1461/7bbb76ce762b159b1283ba39d2d24ba5cc416096.png) 示例中,$N=8, M=2, K=4$。最大的头吃掉了4个果实(实心点),另一个头吃掉了4个果实(空心点)。用细线标出的枝条被九头蛇破坏并吃掉。

输入格式

共十个测试用例(顺序给出,你需要分别处理每一个)。每个测试用例的第一行包含三个用空格分隔的整数 $N(1 \le N \le 300)$、$M(2 \le M \le N)$、$K(1 \le K \le N)$。果实的编号为 $1 \dots N$,编号为 1 的果实是最大的。接下来有 $N-1$ 行,每行有三个整数 $i, j, k$,表示果实 $i(1 \le i \le N)$ 和果实 $j(1 \le j \le N)$ 之间有一条枝条,这条枝条的不适度值为 $k(0 \le k \le 100000)$。

输出格式

输出十行,每行包含一个整数,表示九头蛇的最小总不适度值。如果无法将果实分成 $M$ 组,则输出 `-1`(不带引号)。

说明/提示

- $1 \le N \le 300$ - $2 \le M \le N$ - $1 \le K \le N$ - $0 \le k \le 100000$ **本翻译由 AI 自动生成**