#1613. 有向树k中值问题

有向树k中值问题

题目描述

给定一棵有向树T\red {T},树T\red {T} 中每个顶点u\red {u}都有一个权w(u)\red {w(u)};树的每条边(u,v)\red {(u,v)}也都有一个非负边长d(u,v)\red {d(u,v)}。有向树T\red {T}的每个顶点u\red {u} 可以看作客户,其服务需求量为w(u)\red {w(u)}。每条边(u,v)\red {(u,v)}的边长d(u,v)\red {d(u,v)} 可以看作运输费用。如果在顶点u\red {u }处未设置服务机构,则将顶点u\red {u }处的服务需求沿有向树的边(u,v)\red {(u,v)}转移到顶点v\red {v} 处服务机构需付出的服务转移费用为w(u)×d(u,v)\red {w(u)\times d(u,v)}。树根处已设置了服务机构,现在要在树T\red T中增设k\red {k}处服务机构,使得整棵树T\red T 的服务转移费用最小。 对于给定的有向树T\red {T},编程计算在树T\red {T}中增设k\red {k}处服务机构的最小服务转移费用。

输入格式

1\red {1}行有2\red {2}个正整数n\red {n}k\red {k}n\red {n}表示有向树T\red {T} 的边数;k\red {k}是要增设的服务机构数。有向树T\red {T }的顶点编号为01n\red {0,1,…,n}。根结点编号为0\red {0}。接下来的n\red {n}行中,每行有表示有向树T\red {T}的一条有向边的3\red {3}个整数。第i+1\red {i+1}行的3\red {3 }个整数wi,vi,di\red {w_i,v_i,d_i}分别表示编号为i\red {i }的顶点的权为wi\red {w_i},相应的有向边为(i,vi)\red {(i, v_i)},其边长为di\red {d_i}

输出格式

将计算的最小服务转移费用输出到文件 。

样例

输入样例

4 2

1 0 1

1 1 10

10 2 5

1 2 3

输入样例

4