讨论 / 图论......
996760929 2009-01-18 19:09:00
点我顶贴 收藏 删除
大牛能不能帮我讲讲图论?

我连370都不会做,谢!

#1 122@2009-01-15 23:51:00
回复 删除
var

n,m,k,i,j,x,y,min,ans,ans1:longint;

c:array[1..100,1..100] of longint;

d,pre:array[1..1000] of longint;

begin

readln(n,m);

for i:=1 to n do

for j:=1 to n do

c[i,j]:=maxlongint;

for i:=1 to m do

begin

readln(x,y,c[x,y]);

c[y,x]:=c[x,y];

end;

for i:=1 to n do

begin

d[i]:=c[1,i];

pre[i]:=1;

end;

d[1]:=0;

for i:=1 to n-1 do

begin

min:=maxlongint;

for j:=1 to n do

if (d[j]<>0)and(d[j]<min) then

begin

min:=d[j];

k:=j;

end;

d[k]:=0;

for j:=1 to n do

if (d[j]<>0) and (c[k,j]<d[j]) then

begin

d[j]:=c[k,j];

pre[j]:=k;

end;

end;

ans:=0; ans1:=0;

for i:=2 to n do

ans1:=ans1+c[pre[i],i];

for i:=1 to n do

for j:=1 to n do

if c[i,j]<>maxlongint then

ans:=ans+c[i,j];

ans:=ans div 2-ans1;

write(ans);

end.

#2 996760929@2009-01-17 18:34:00
回复 删除
..
#3 zrp@2009-01-17 18:36:00
回复 删除
先拓排再做
#4 why19931123@2009-01-18 19:09:00
回复 删除
简简单单prim!!!

var

f:array[1..100,1..100]of longint;

s,m,n,o,p,q,r:longint;

procedure prim;

var

lowcost:array[1..100]of longint;

closest:array[1..100]of longint;

min,max,i,j,k:longint;

begin

for i:=1to m do

begin

lowcost[i]:=f[1,i];

closest[i]:=1;

end;

for i:=1to m-1do

begin

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];

end;

begin

readln(m,n);

for o:=1to m do

for p:=1to m do

f[o,p]:=2147483647;

for o:=1to n do

begin

readln(p,q,s);

f[p,q]:=s;

f[q,p]:=s;

r:=r+s;

end;

prim;

write(r);

end.

查看更多回复
提交回复