仙人草 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;