正确答案应该是多少
把 0 到 3 的所有路径都枚举一遍,取最短的。运行下面这段程序:
def brute(g, s, t):
INF = 10 ** 9
best = [INF]
def go(u, c, seen):
if u == t:
if c < best[0]:
best[0] = c
return
for v, w in g[u]:
if v not in seen:
go(v, c + w, seen | {v})
go(s, 0, {s})
return best[0]
print(brute({0: [(1, 4), (2, 5)], 1: [(3, 1)], 2: [(1, -3)], 3: []}, 0, 3))
全部评论