⚠️ 一个四点的反例

👁️ 0 人浏览 💬 0 人评论 ❤️ 添加收藏

有向图:0→1 长 4、0→2 长 5、2→1-31→3 长 1。运行 Dijkstra,看它给出的距离表:

import heapq

def dijkstra(g, s):
    INF = 10 ** 9
    d = {u: INF for u in g}
    d[s] = 0
    done = set()
    pq = [(0, s)]
    while pq:
        du, u = heapq.heappop(pq)
        if u in done:
            continue
        done.add(u)
        for v, w in g[u]:
            if du + w < d[v]:
                d[v] = du + w
                heapq.heappush(pq, (d[v], v))
    return d

g = {0: [(1, 4), (2, 5)], 1: [(3, 1)], 2: [(1, -3)], 3: []}
d = dijkstra(g, 0)
print("/".join(str(d[u]) for u in sorted(g)))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论