2020.08.08【NOIP提高组】模拟:灌水 总结
Description
Farmer John已经决定把水灌到他的
n
(
1
≤
n
≤
300
)
n(1\leq n\leq300)
n(1≤n≤300)块农田,农田被数字
1
1
1到
n
n
n标记。把一块土地进行灌水有两种方法,从其他农田饮水,或者这块土地建造水库。
建造一个水库需要花费
w
i
(
1
≤
w
i
≤
100000
)
w_i(1\leq w_i\leq100000)
wi(1≤wi≤100000),连接两块土地需要花费
p
i
,
j
(
1
<
=
p
i
,
j
<
=
100000
,
p
i
,
j
=
p
j
,
i
,
p
i
,
i
=
0
)
p_{i,j}(1<=p_{i,j}<=100000,p_{i,j}=p_{j,i},p_{i,i}=0)
pi,j(1<=pi,j<=100000,pi,j=pj,i,pi,i=0)。
计算Farmer John所需的最少代价。
Input
第一行:一个数
n
n
n。
第二行到第
n
+
1
n+1
n+1行:第
i
+
1
i+1
i+1行含有一个数
w
i
w_i
wi。
第
n
+
2
n+2
n+2行到第
2
n
+
1
2n+1
2n+1行:第
n
+
1
+
i
n+1+i
n+1+i行有
n
n
n个被空格分开的数,第
j
j
j个数代表
p
i
,
j
p_{i,j}
pi,j。
Output
第一行:一个单独的数代表最小代价。
Sample Input
4
5
4
4
3
0 2 2 2
2 0 3 3
2 3 0 4
2 3 4 0
Sample Output
9
输出详解:
Farmer John在第四块土地上建立水库,然后把其他的都连向那一个,这样就要花费
3
+
2
+
2
+
2
=
9
3+2+2+2=9
3+2+2+2=9。
总结
比赛思路&正解: 我们新建一个 0 0 0号结点,当做地下水厂(出水的地方)。然后跑一遍最小生成树模板就过了。