For i:=1 to |V|-1 do
For 每条边(u,v)∈E do
Relax(u,v,w);
For每条边(u,v)∈E do
If dis[u]+w<dis[v] Then Exit(False)
bool Bellman-Ford(G,w,s) //图G ,边集 函数 w ,s为源点
1 for each vertex v ∈ V(G) //初始化 1阶段
2 d[v] ←+∞;
3 d[s] ←0; //1阶段结束
4 for(int i=1;i<|v|;i++) //2阶段开始,双重循环。
5 for each edge(u,v) ∈E(G) //边集数组要用到,穷举每条边。
6 if(d[v]> d[u]+ w(u,v))//松弛判断
7 d[v]=d[u]+w(u,v); //松弛操作2阶段结束
8 for each edge(u,v) ∈E(G)
9 if(d[v]> d[u]+ w(u,v))
10 return false;
11 return true;
算法时间复杂度O(VE)。因为算法简单,适用范围又广,虽然复杂度稍高,仍不失为一个很实用的算法。