INITIALIZE-SINGLE-SOURCE(G,s)
for each vertex v ∈ G.V
v.d = ∞
v.π = NIL
s.d = 0
RELAX(u,v,w)
if v.d > u.d + w(u,v)
v.d = u.d + w(u,v)
v.π = u
//算法本体开始
BELLMAN-FORD-FIND-NEGATIVE-CYCLE(G,w,s)
//第一部分:初始化,引用INITIALIZE-SINGLE-SOURCE(G,s)
INITIALIZE-SINGLE-SOURCE(G,s)
//第二部分:计算,引用RELAX(u,v,w)
for i <- 1 to |V[G]| - 1
do for each edge (u,v) ∈ E[G]
do RELAX(u,v,w)
//第三部分:检验,FIND-NEGATIVE-CYCLE。
for each edge (u,v) ∈ E[G]
do if d[v] > d[u] + w(u,v)
then mark v
x <- v
while π[x] is not marked
do mark π[x]
x <- π[x]
return marked nodes
return NIL