# 图 g 和起点 s
# 如果有负环,则返回 True
bellmanFord(g, s):
for v ← 0 to g.N-1:
dist[v] ← INF
dist[s] ← 0
for t ← 0 to N-1:
updated ← False
for u ← 0 to g.N-1:
if dist[u] = INF: continue
for e in g.adjLists[u]:
if dist[e.v] > dist[u] + e.weight
dist[e.v] ← dist[u] + e.weight
updated ← True
if t = N-1:
return True # 检测负环
if not updated: break # 如果没有更新,则结束循环
return false # 没有负环