#1162. [CTSC2004]网络改造network

[CTSC2004]网络改造network

题目描述

从前,HURRICANE 小组承担了一项重要的工作——把校园内的计算机接入到 Internet 上面去。他们首先把每个人的计算机编组并把同一组的连在一台基层础交换机上,然后设立了一个对外的顶级网关交换机,再用其他的一些中间交换机把这些交换机一层一层的连接起来接到顶级网关交换机上。

而且交换机都是严格的按照一层一层的连接起来的,低一层的交换机只会连接到一台高一层的交换机上面,但一台高层的交换机可能同时和几台低一层的交换机相连。

但最近,由于原来架设的网络服务有限,需要把网络中的一些交换机升级为核心交换机并对整个网络提供更多的服务。

不过由于改造的时间所限,只来得及把不超过 pp 台交换机升级为核心交换机,而所有剩下的交换机则需要通过改造网络的方法和这几台核心交换机直接连接。

但是无论是升级交换机还是改造网络都需要花费一定的资金。现在请你给出一个改造网络的方案。使得按照该方案升级后每一个交换机要么是核心交换机,要么直接和核心交换机相连。并且要求提供的方案使改造所用的总费用最小。

你的程序必须根据给出的输入,提供符合题意的输出:

输入包括网络的拓扑结构,升级网络中每台交换机的费用,以及改造网络的费用,还有可以升级的交换机的最大数目;

你必须根据输入,找出一个升级的方案,满足升级后的核心交换机的数目不超过给定的可升级交换机最大值 pp,且使得总费用最少;

其中总费用的计算包括两个部分:

一部分是升级交换机为核心交换机所需要的费用,该部分的费用按照所有的需要升级的交换机所需的费用之和来计算;

另一部分是改造网络所需要的费用,该部分的费用按照所有未升级的交换机到最近的核心交换机的距离之和来计算;

如果两台交换机直接相连,那么该距离即为他们之间的网络距离;

如果两台交换机是通过其他的交换机间接连接在一起的,那么它们之间的距离定义为它们之间的唯一一条路径上相邻的交换机之 间网络长度之和;

注意:当网络中没有任何交换机升级到核心交换机的时候,由于也没有交换机可以连接到核心交换机,所以我们定义此时的总费用为无穷大。

输入格式

第一行为两个整数 nnpp,分别表示网络中交换机的数目和可升级交换机的最大值。

接下来的 nn 行每行一个正整数 cic_i,表示把标号为i的交换机升级为核心交换机所需要的费用。

接下来的 n1n-1 行每行三个整数 i,j,di,ji,j,d_{i,j},表示编号为 ii 的交换机为编号为 jj 的交换机的上层交换机,而 di,jd_{i,j} 表示两台交换机之间的网络长度。

输出格式

你的输出第一行为一个整数,表示你的方案的最小总费用。

接下来一行包括一个整数 p0p_0,表示你的方案所需要升级为核心交换机的交换机数目。

4 2
20
20
20
20
1 3 1
1 2 1
1 4 1
23
1

数据规模与约定

对于 100/100/% 的数据,n400n \le 400