Bellman-Ford 在那个反例上
同一张有负权边的图,这次用 Bellman-Ford。运行下面这段程序:
def bellman(g, s):
INF = 10 ** 9
d = {u: INF for u in g}
d[s] = 0
for _ in range(len(g) - 1):
for u in g:
if d[u] == INF:
continue
for v, w in g[u]:
if d[u] + w < d[v]:
d[v] = d[u] + w
return d
g = {0: [(1, 4), (2, 5)], 1: [(3, 1)], 2: [(1, -3)], 3: []}
d = bellman(g, 0)
print("/".join(str(d[u]) for u in sorted(g)))
全部评论