Pagini recente » Cod sursa (job #3288850) | Cod sursa (job #719782) | Cod sursa (job #3226983) | Cod sursa (job #2370168) | Cod sursa (job #21440)
Cod sursa(job #21440)
const maxn = 100;
inf = 2000000000;
type punct = record
x,y:longint;
end;
var f:text;
n,i,j,k,c,i0,j0,c0,li0,r,u,u0:longint;
s:longint;
a:array[1..maxn,1..maxn]of longint;
d,v:array[1..maxn]of longint;
procedure readdata;
begin
assign(f,'cc.in');
reset(f);
readln(f,n);
for i:=1 to n do
begin
for j:=1 to n do
begin
read(f,a[i,j]);
end;
end;
close(f);
end;
procedure solve;
begin
d[1]:=1;
v[1]:=1;
s:=a[1,1];
for k:=2 to n do
begin
li0:=a[1,k]+a[k,d[1]]-a[1,d[1]];
i0:=1;
c0:=d[i0];
j:=d[i0];
for i:=1 to k-1 do
begin
j:=d[i];
r:=a[i,k]+a[k,j]-a[i,j];
if r<li0 then
begin
li0:=r;
i0:=i;
j:=d[i];
c0:=j;
j0:=j;
end;
for c:=1 to k-1 do
begin
if (c<>j) then
begin
u:=v[c];
r:=a[i,k]+a[k,c]-a[i,j]-a[u,c]+a[u,j];
if (r<li0) then
begin
li0:=r;
c0:=c;
i0:=i;
u0:=u;
j0:=j;
end;
end;
end;
end;
if li0>=a[k,k] then
begin
s:=s+a[k,k];
d[k]:=k;
v[k]:=k;
end
else
begin
s:=s+li0;
if c0=j0 then
begin
d[i0]:=k;
d[k]:=c0;
v[c0]:=k;
v[k]:=i0;
end
else
begin
d[i0]:=k;
v[k]:=i0;
d[u0]:=j0;
v[j0]:=u0;
d[k]:=c0;
v[c0]:=k;
end;
end;
end;
end;
procedure writedata;
begin
assign(f,'cc.out');
rewrite(f);
writeln(f,s);
close(f);
end;
begin
readdata;
solve;
writedata;
end.