#P2179. 传染病防疫(epidemic)

传染病防疫(epidemic)

【题目描述】

传染病来势汹汹,一个区域内的城镇要共同抵御疫情…… 这个区域内共有N座城镇,其中Q个城镇已经建好了防疫站,为了防疫工作的需要,每个城镇必须有公路通到至少一个防疫站,现在已有一些修好的路可以利用。修建第i个城镇到第j个城镇的公路花费cost(i,j),还有有P个城镇由于条件优越,可以花钱建防疫站。这N个城镇的人民找到了会编程的你,至少要花多少钱可以完成防疫?

【输入格式】

第1行: 3个整数 N,Q,P

下来Q行,每行一个整数Ki,表示第K个城镇已有防疫站,

下来P行,每行2个整数Ti和price_i,表示在第Ti个城镇修建防疫站的价格为price_i

以下N* N的矩阵,第i行第j列的整数 表示cost(i,j) 最后N*N的矩阵,第i行第j列的整数 第i个城镇与第j个城镇之间的道路有无情况,为0或者1,1表示已经修建好的,0表示还没有道路。

题目保证2个矩阵都是对称的(a[i,j] = a[j,i])且主对角线都为0(a[i,i]=0 , i=1..n)。

【输出格式】

1行 1个整数ans,表示最少的花费。

【输入样例】

3 1 1 
1
3 1
0 3 3
3 0 5
3 5 0
0 1 0
1 0 0
0 0 0

【输出样例】

1

【样例解释】

城镇1已建好防疫站,且1-2有道路已经修好。只需在城镇3建防疫站,费用为1.

【数据范围】

对于 20% 的数据 P=0,Q=1

对于 30% 的数据 N<=10

对于100%的数据 N<=700 0<=Q,P<=N

Cost,price 均为 1~100000 间的整数,题目保证P+Q>0