其他的却一个都不对呢?
type
s=set of 1..200;
re=record
l,r:longint;
len:longint;
end;
var
vset:array[1..100] of s;
e:array[1..20000] of re;
n,i,j,p,q,t:longint;
x:qword;
tot:qword;
procedure sort(l,r:integer);
var
i,j:longint;
x:longint;
t:re;
begin
x:=e[(l+r)div 2].len; i:=l; j:=r;
repeat
while e[i].len<x do inc(i);
while e[j].len>x do dec(j);
if i<=j then begin t:=e[i]; e[i]:=e[j]; e[j]:=t; inc(i); dec(j); end;
until i>j;
if i<r then sort(i,r);
if j>l then sort(l,j);
end;
function find(v:longint):longint;
var
i:longint;
begin
i:=1;
while (i<=n)and(not(v in vset[i])) do inc(i);
if i<=n then find:=i else find:=0;
end;
begin
readln(n);
for i:=1 to n do
for j:=1 to n do
begin
read(x);
if x<>0 then begin
inc(t); e[t].l:=i; e[t].r:=j; e[t].len:=x; end;
end;
sort(1,t);
for i:=1 to n do vset[i]:=[i];
p:=n-1; q:=1; tot:=0;
while p>0 do
begin
i:=find(e[q].l); j:=find(e[q].r);
if i<>j then begin
vset[i]:=vset[i]+vset[j]; vset[j]:=[]; inc(tot,e[q].len); dec(p); end;
inc(q);
end;
write(tot);
end.
万分感谢!