就是用了邻接表来储存这个图
进行spfa时可以少进行很多次判断
pascal
type
arr=record
x,y,w,next:longint;
end;
var
edge:array[0..1000000] of arr;
ls,t,state:array[0..1000000] of int64;
exits:array[0..1000000] of boolean;
i,j,k,n,m,q,p,o,s:longint;
procedure spfa;
var
head,tail,i,j:longint;
begin
state[1]:=0;
head:=0; tail:=1;
exits[1]:=true;
t[1]:=1;
repeat
inc(head);
i:=ls[t[head]];
while i<>0 do
begin
with edge[i] do
begin
if state[x]+w
c++
#includeusing namespace std; int i; struct arr { int x,y,w,next; }; arr edge[10000000]; int state[100000000],t[100000000],ls[100000000]; bool exits[1000000]; int spfa() { int head=0,tail=1; t[1]=1; state[1]=0; exits[1]=true; do { head++; i=ls[t[head]]; while (i!=0) { if (state[edge[i].x]+edge[i].w
Comments NOTHING