# Bellman Ford improvement ###### tags: `演算法` ```c= //v.dep為bfs tree中的depth,在INIT(G,s)裡面算好了 Bellman_Ford(G,w,s){ INIT(G,s) for i=1:|G.V|-1 relax=false for each edge uv in G.E and v.dep==i if d[v]>d[u]+w(u,v) RELAX(u,v,w) relax=true if !relax for each edge uv in G.E if d[v]>d[u]+w(u,v) return false break return true } INIT(G,s){ for each v in G.V v.d=INF v.parent=NULL s.d=0 s.dep=0 Q={} //a FIFO queue Q.push(s) while(!Q.empty()){ u=Q.pop() for v in G.Adj[u] v.dep=u.dep+1 Q.push(v) } } ```