#832. 树上的游走序列
树上的游走序列
F1160. 树上的游走序列
时间限制:1000ms 内存限制:256MiB 标签:动态规划, 树形DP
【题目描述】
给定一棵 个结点的树,结点编号为 到 。树中共有 条边,第 条边连接结点 与结点 ,长度为 。
记 为结点 与结点 之间唯一简单路径上所有边的长度之和。
你需要从树中选出 个互不相同的结点,并把它们按某种顺序排成一个长度为 的序列 。这个序列的代价是相邻两项在树上距离的总和,即 。
求所有选法与排列方式中,代价的最小值。
【输入描述】
第一行一个整数 ,表示数据的组数。
接下来依次给出 组数据,每组数据的格式如下:
- 第一行两个整数 ,表示结点的个数与需要选出的结点个数;
- 接下来 行,每行三个整数 ,描述第 条边。
对于所有数据,保证:
- ;
- ;
- ;
- ,;
- ;
- 给出的 条边恰好构成一棵树;
- 所有数据的 之和不超过 5000。
【输出描述】
每组数据输出一行,一个整数,表示代价的最小值。
【样例 1】
【样例 1 输入】
4
5 3
1 2 2
2 3 3
3 4 6
3 5 1
4 4
1 2 6
2 3 3
3 4 5
3 2
1 2 9
1 3 5
2 1
1 2 7
【样例 1 输出】
4
14
5
0
【样例 1 解释】
第一组数据里,、、、 依次相连,边长是 、、, 号结点下面还挂着 号结点,边长 。要从五个点里挑三个,选 、、 最省:从 走到 用 ,从 走到 又用 ,一共 。把 换成 ,光从 走到 就要先走 再走 ,已经超过 了;换成 , 到 要 。所以最小代价是 。
第二组数据里 正好等于 ,四个结点全都要走到,只能顺着 这条链走一遍,代价是 。
第三组数据只要两个结点,只要路径最短即可, 与 之间的边长为 ,比 与 之间的 更短,所以答案是 。
第四组数据 ,序列里只有一个结点,没有相邻的一对,代价是 。
【样例 2】
【样例 2 输入】
5
6 5
6 1 4
2 1 6
4 3 9
2 3 3
3 5 2
6 3
4 6 2
1 3 6
1 2 3
3 4 2
1 5 5
5 3
4 2 1
4 5 4
3 1 8
2 1 6
6 4
5 3 6
6 2 6
1 3 5
2 1 9
3 4 5
5 3
3 2 5
1 4 8
1 2 4
1 5 9
【样例 2 输出】
15
4
5
19
9
【数据规模与约定】
| 测试集编号 | 分数 | 特殊性质 |
|---|---|---|
| 1 | 20 | 每组数据中 |
| 2 | 30 | 每组数据中 |
| 3 | 50 | 无特殊性质 |