讨论 / dij不能用吗?
仙人草 2008-08-12 20:38:00
点我顶贴 收藏 删除
这是我的dij,实在看不出哪里错了……求教各位大牛

oo为maxlongint shr 1;a[i,j]为i到j的距离

f[i]表示m点到i点的最短距离

7,8点的最短距离都错了……T_T

fillchar(p,sizeof(p),0);

w:=0;

for i:=1 to n do f[i]:=a[m,i];

p[m]:=true;

f[0]:=oo;

f[m]:=0;

while true do

begin

k:=0;

for j:=1 to n do

if not(p[j]) and (f[j]<f[k]) then k:=j;

if k=0 then break

else

begin

p[k]:=true;

for j:=1 to n do

if (f[j]>f[k]+a[k,j]) and not(p[j]) then

f[j]:=f[k]+a[k,j];

end;

end;

#1 DarkMaster@2008-08-12 20:38:00
回复 删除
用dij就等着数组爆掉吧。。
查看更多回复
提交回复