两张图,各有没有负环

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

一张是上一节那个有负权边的图,一张是 0→1:1、1→2:-1、2→1:-1(1 和 2 之间绕一圈是 -2)。运行下面这段程序:

def has_neg_cycle(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
    for u in g:
        if d[u] == INF:
            continue
        for v, w in g[u]:
            if d[u] + w < d[v]:
                return True
    return False

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

                        
👩‍🏫
AI
💬 题目评论

全部评论