很水的最小生成树题
prim算法:
program poj1258;
var
a:array[1..100,1..100] of longint;
b:array[1..100] of longint;
c:array[1..100] of integer;
n,i,j:integer;
ans:longint;
procedure prim;
var
k:integer;
min:longint;
begin
for i:=2 to n do
begin
b[i]:=a[1,i];
c[i]:=1;
end;
for i:=2 to n do
begin
min:=maxlongint;
for j:=1 to n do
if (b[j]<>0) and (b[j]<min) then
begin
min:=b[j];
k:=j;
end;
b[k]:=0;
for j:=1 to n do
if (b[j]<>0) and (a[k,j]<b[j]) then
begin
b[j]:=a[k,j];
c[j]:=k;
end;
end;
end;
begin
readln(n);
while n<>0 do
begin
fillchar(a,sizeof(a),0);
fillchar(b,sizeof(b),0);
fillchar(c,sizeof(c),0);
for i:=1 to n do
begin
for j:=1 to n do
read(a[i,j]);
readln;
end;
prim;
ans:=0;
for i:=2 to n do
inc(ans,a[i,c[i]]);
writeln(ans);
readln(n);
end;
end.