904. 虫洞

摘要
Title: 904. 虫洞
Tag: spfa、负环
Memory Limit: 64 MB
Time Limit: 1000 ms

Powered by:NEFU AB-IN

Link

904. 虫洞

  • 题意

    见原题

  • 思路

    看是否有负环即可

    • 别忘把所有点都入队
  • 代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    '''
    Author: NEFU AB-IN
    Date: 2022-04-16 16:17:22
    FilePath: \ACM\Acwing\904.py
    LastEditTime: 2022-04-16 16:17:23
    '''
    from collections import deque

    N = 550
    INF = int(1e9)
    g = [[] for _ in range(N)]
    dist, st, cnt = [INF] * N, [0] * N, [0] * N


    def spfa():
    q = deque()
    for i in range(1, n + 1):
    q.appendleft(i)
    st[i] = 1
    dist[i] = 0
    while q:
    u = q.pop()
    st[u] = 0

    for v, w in g[u]:
    if dist[v] > dist[u] + w:
    dist[v] = dist[u] + w
    if st[v] == 0:
    st[v] = 1
    q.appendleft(v)
    cnt[v] = cnt[u] + 1
    if cnt[v] >= n:
    return 1
    return 0


    for _ in range(int(input())):
    g = [[] for _ in range(N)]
    dist, st, cnt = [INF] * N, [0] * N, [0] * N

    n, m, w = map(int, input().split())
    for i in range(m):
    u, v, t = map(int, input().split())
    g[u].append([v, t])
    g[v].append([u, t])
    for i in range(w):
    u, v, t = map(int, input().split())
    g[u].append([v, -t])
    if spfa():
    print("YES")
    else:
    print("NO")
使用搜索:谷歌必应百度