Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
帮忙看下Dijkstra算法哪里错了,WA无数次program poj1847; var x:array[1..200,1..200] of longint; f:array[1..200] of boolean; d:array[1..200] of longint; n,a,b,i,j,k,l,min:longint; begin fillchar(f,sizeof(f),false); readln(n,a,b); for i:=1 to n do for j:=1 to n do begin if i=j then x[i,j]:=0 else x[i,j]:=maxlongint; end; for i:=1 to n do begin read(k); for j:=1 to k do begin read(l); if j<>1 then x[i,l]:=1 else x[i,l]:=0; end; end; f[a]:=true; for i:=1 to n do d[i]:=x[a,i]; for i:=2 to n do begin min:=maxint; for j:=1 to n do if (not f[j])and(d[j]<min) then begin min:=d[j]; k:=j; end; f[k]:=true; for j:=1 to n do if (not f[j])and(d[k]+x[k,j]<d[j]) then d[j]:=d[k]+x[k,j]; end; if d[b]=maxlongint then writeln(-1) else writeln(d[b]); end. Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator