湘大的网络拓扑可以看成一幅联通树形图(数据结构中的"树"),其中网络中心所在的位置是 $$$1$$$ 号点,也就是根节点。路由器以及服务器都可以看成一个节点。总共有 $$$n$$$ 个节点,$$$n- 1$$$ 条边,每条边就是一条线路,每条线路会有一个传输时延 $$$t$$$,从节点 $$$a$$$ 到 $$$b$$$ 的时间等于$$$a,b$$$ 之间 最短路径上的传输时延之和。
现在网络中心获得了一笔经费,这笔经费可以足够整改 $$$k$$$ 次线路,每一次整改可以将这条线路的时延减少 $$$\lfloor \frac{t}{2} \rfloor$$$。也就是说,对一条时延为 $$$t$$$ 的线路进行一次整改,它的时延由 $$$t$$$ 变为 $$$\lceil \frac{t}{2} \rceil$$$ ,并且一条线路可以经历多次整改。注意区分"线路"与"路径"的区别,线路只指一条边。
我们设 $$$f(x)$$$ 为从 $$$1$$$ 号点传输消息到 $$$x$$$ 点需要的时延(注意,只是单向的,所以你不需要考虑消息回送),由于网络中心需要长期发布一些消息,所以网络中心想知道经历整改后可以使得 $$$\sum _{i=2}^n{f(i)}$$$ 最小为多少?
$$$\lfloor x \rfloor$$$ 表示不大于 $$$x$$$ 的最大整数,即向下取整。$$$\lceil x \rceil$$$ 表示不小于 $$$x$$$ 的最小整数,即向上取整。
形式化的说:给定一棵 $$$n$$$ 个节点的带权树形图,你有 $$$k$$$ 次机会,每次你可以选择一条边,使得它的边权从 $$$t_i$$$ 变为 $$$\lceil \frac{t_i}{2} \rceil$$$,询问你所有点到根节点的路径和最小是多少?
第一行一个数字 $$$T$$$ ,代表测试组数。
对于每组输入,由以下部分组成:
输出 $$$T$$$ 行,每行一个整数 $$$W$$$ ,表示最小时延和。
3 5 3 2 1 4 3 1 6 4 2 3 5 3 1 5 3 2 1 9 3 2 6 4 3 9 5 4 7 5 3 2 1 586754654 3 1 313989971 4 3 557336509 5 4 748196409
12 46 1989174327