讨论 / 图的最小环
永夜 2010-08-17 23:09:00
点我顶贴 收藏 删除
var

g,dist:array[1..250,1..250]of longint;

n,m,i,j,k,ans,w:longint;

function min(a,b:longint):longint;

begin

if a<b then exit(a)

else exit(b);

end;

begin

readln(n,m);

ans:=maxint;

for i:=1 to n do

for j:=1 to n do

begin

g[i,j]:=maxint;

dist[i,j]:=maxint;

end;

for k:=1 to m do

begin

readln(i,j,w);

g[i,j]:=w;

g[j,i]:=w;

dist[i,j]:=w;

dist[j,i]:=w;

end;

for k:=1 to n do

begin

for i:=1 to k-1 do

for j:=i+1 to k-1 do

ans:=min(ans,dist[i,j]+g[i,k]+g[k,j]);

for i:=1 to n do

for j:=1 to n do

dist[i,j]:=min(dist[i,j],dist[i,k]+dist[k,j]);

end;

if ans=maxint then writeln('He will never come back.')

else writeln(ans);

end.

查看更多回复
提交回复