# 图 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 # 没有负环