type edge=record
fr,en,we:integer;
end;
var g:array[1..100,1..100] of integer;
ed:array[1..100] of edge;
n,i,j,k,min,m,s,w:integer;
t:edge;
begin
assign(input,'creat.in');
assign(output,'creat.out');
reset(input);
rewrite(output);
readln(n);
for i:=1 to n do
begin
for j:=1 to n do
begin
read(g[i,j]);
if g[i,j]=0 then
g[i,j]:=maxint;
end;
readln;
end;
for i:=1 to n-1 do
begin
ed[i].fr:=1;
ed[i].en:=i+1;
ed[i].we:=g[i,i+1];
if ed[i].we=0 then
ed[i].we:=maxint;
end;
for k:=1 to n-1 do
begin
min:=maxint;
m:=k;
for j:=k to n-1 do
if (ed[j].we<min)and(ed[j].we<>0) then
begin
MIN:=ED[J].WE;
M:=J;
END;
if m<>k then
begin
t:=ed[k];
ed[k]:=ed[m];
ed[m]:=t;
end;
j:=ed[k].en;
for i:=k+1 to n-1 do
begin
s:=ed[i].en;
w:=g[j,s];
if w<ed[i].we then
begin
ed[i].we:=w;
ed[i].fr:=j;
end;
end;
end;
w:=0;
for i:=1 to n-1 do
begin
writeln('edge ',i,' fr: ',ed[i].fr,' en: ',ed[i].en,' we ',ed[i].we);
w:=w+ed[i].we;
end;
writeln(w);
close(input);
close(output);
end.
哪位高手把每一部都说一下意思,小弟感激不仅!!!