const
maxe=5000;
maxn=5000;
var
g:array[1..maxe] of record x,y,dis:longint; end;
dist:array[1..maxn] of longint;
n,e:longint;
function bellman_ford(s:longint):boolean;
var
i,j:longint;
flag:boolean;
begin
for i:=1 to n do dist[i]:=maxlongint;dist[s]:=0;
for i:=1 to n do begin
flag:=false;
for j:=1 to e do
if (dist[g[i].x]<>maxlongint)and(dist[g[i].x]+g[i].dis<dist[g[i].y]) then begin
dist[g[i].y]:=dist[g[i].x]+g[i].dis;
flag:=true;
end;
if not flag then exit(true)
else if i=n then exit(false);
end;
end;
Bellman-ford模板
最新推荐文章于 2024-03-24 18:34:34 发布