我的代码是基于Dijkstra写的,WA4个,其他全AC,代码如下:
import sys, heapq
input = lambda: sys.stdin.readline().strip()
def have_negative_circle(graph, s):
seen = set()
pqueue = [(0, s)]
distance = {i: float('inf') for i in graph}
distance[s] = 0
while pqueue:
dist, vertex = heapq.heappop(pqueue)
seen.add(vertex)
for node in graph[vertex]:
Dist = dist + graph[vertex][node]
if node in seen and Dist < distance[node]:
return True
if node not in seen and Dist < distance[node]:
distance[node] = Dist
heapq.heappush(pqueue, (Dist, node))
return False
for _ in range(int(input())):
n, m = map(int, input().split())
graph = {i: {} for i in range(1, n + 1)}
for _ in range(m):
u, v, w = map(int, input().split())
if w < 0:
flag = v in graph[u]
if not flag or flag and w < graph[u][v]:
graph[u][v] = w
if w >= 0:
flag1 = u in graph[v]
flag2 = v in graph[u]
if not flag2 or flag2 and w < graph[u][v]:
graph[u][v] = w
if not flag1 or flag1 and w < graph[v][u]:
graph[v][u] = w
if have_negative_circle(graph, 1):
print('YES')
else:
print('NO')
求助啊