很水的最小生成树题

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.