min:=2147483647;
for j:=1to m do
if(lowcost[j]<min)and(lowcost[j]<>0)
then begin
min:=lowcost[j];
k:=j;
end;
lowcost[k]:=0;
for j:=1to m do
if f[k,j]<lowcost[j]
then begin
lowcost[j]:=f[k,j];
closest[j]:=k;
end;
end;
for i:=2to m do
r:=r-f[closest[i],i];
以下是我的代码,上面的看不懂~~~~~~
who can help me?
var
f:array[1..200,1..200]of integer;
x,y,i,n,j,k,v:integer;
num,numm:longint;
procedure prim(v0:integer);
var flag:array[1..200] of boolean;
min,pre,nex:integer;
begin
fillchar(flag,sizeof(flag),false);
flag[v0]:=true;
num:=0;
for i:= 1 to v-1 do
begin
min:=maxint;
for k:=1 to v do
if flag[k] then
for j:=1 to v do
if (not flag[j])and(f[k,j]<>0)and(f[k,j]<min) then
begin
min:=f[k,j]; pre:=k; nex:=j;
end;
if min<>maxint then
begin
flag[j]:=true;
inc(num,f[pre,nex]);
end;
end;
end;
begin
readln(v,n);
fillchar(f,sizeof(f),0);
for i:=1 to n do
begin
read(x,y);
read(f[x,y]);
f[y,x]:=f[x,y];
end;
numm:=0;
for i:=1 to v do
for j:=1 to v do inc(numm,f[i,j]);
numm:=numm div 2;
prim(1);
writeln(num*2);
end.