模拟链表SPFA...
今天上午刚AC掉自己的第一个模拟链表SPFA~是不是有点晚呢...发出来受BS一下...
program SPFA; type l=record x,y,q,n:integer; end; var d:array[1..100000]of l; e,dist:array[1..100000]of integer; nn,m,i,j:integer; v:array[1..100000]of boolean; x,y,z,o:integer; n,f,s:integer; q:array[1..1000]of integer; t,xx:integer; procedure add(x,y,z:integer); begin inc(o); d[o].x:=x; d[o].y:=y; d[o].q:=z; d[o].n:=e[x]; e[x]:=o; end; begin readln(n,m); for i:=1 to m do begin readln(x,y,z); add(x,y,z); add(y,x,z); end; f:=1; s:=1; q[1]:=1; for i:=1 to n do dist[i]:=32767; dist[1]:=0; while f<=s do begin xx:=q[f]; v[xx]:=false; t:=e[xx]; while t<>0 do begin if(d[t].q+dist[xx]<dist[d[t].y])then begin dist[d[t].y]:=d[t].q+dist[xx]; if not v[d[t].y] then begin v[d[t].y]:=true; inc(s); if s>n then s:=1; q[s]:=d[t].y; end; end; t:=d[t].n; end; inc(f); if f>n then f:=1; end; for i:=1 to n do writeln(dist[i]); end.