BellmanFord

来源:百度知道 编辑:UC知道 时间:2024/09/27 15:32:43
给个可以运行的代码,输入的数据说明下用意谢谢
简单一点,不要很多类那种啊

Pascal代码:
const
maxn=100;
maxe=maxn*(maxn-1)div 2;
type
edge=record
a,b,w :integer;
end;
var
edges :array[1..maxe]of edge;
dis :array[1..maxn]of integer;
pre :array[1..maxn]of integer;
e,n,s :integer;
procedure init;
var
i :integer;
begin
e:=0;
assign(input,'g.in');reset(input);
readln(n,s);
while not eof do
begin
inc(e);
with edges[e] do readln(a,b,w);
end;
fillchar(dis,sizeof(dis),$7f);//初始值为无穷大
dis[s]:=0;pre[s]:=s;
end;
procedure relax(u,v,w:integer);
begin
if dis[u]+w<dis[v] then
begin
dis[v]:=dis[u]+w;
pre[v]:=u;
end
end;
function bellman_ford:boolean;
var
i,j :integer;
begin
for i:=1 to n-1 do
for j:=1 to e do
with edges[j] do relax(a,b,w