FWATER - Tưới nước đồng cỏ
Tác giả: flashmt
Ngôn ngữ: Pascal
uses math;
const fi='';
oo=1000000000;
var m,n,re:longint;
free:array[1..300] of boolean;
d,b:array[1..300] of longint;
a:array[1..300,1..300] of longint;
procedure rf;
var i,j:longint;
begin
read(n);
for i:=1 to n do read(b[i]);
for i:=1 to n do
for j:=1 to n do read(a[i,j]);
end;
procedure pr;
var i,j,x,mn:longint;
begin
for i:=1 to n do
begin
free[i]:=true; d[i]:=b[i];
end;
mn:=maxlongint;
for i:=1 to n do
if b[i]<mn then
begin
mn:=b[i]; x:=i;
end;
free[x]:=false; re:=d[x];
for i:=1 to n-1 do
begin
for j:=1 to n do
if free[j] then
d[j]:=min(d[j],a[x,j]);
mn:=oo;
for j:=1 to n do
if free[j] and (mn>d[j]) then
begin
mn:=d[j]; x:=j;
end;
free[x]:=false; re:=re+d[x];
end;
writeln(re);
end;
begin
assign(input,fi); reset(input);
rf;
pr;
close(input);
end.