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.

Download