样例1:333ms,样例2:429ms,样例8TLE,其他全A 下面是我的Python代码,我感觉已经没法再优化了,求助啊!!拓扑排序的做法我已经A了,现在想研究下Dijkstra怎么A
import sys
import heapq
input = lambda: sys.stdin.readline().strip()
def Dijkstra(graph, n):
pqueue = [(0, 1)]
distance = {i: -float('inf') for i in graph}
distance[1] = 0
while pqueue:
dist, vertex = heapq.heappop(pqueue)
dist = -dist
if dist < distance[vertex]:
continue
for node in graph[vertex]:
Dist = dist + graph[vertex][node]
if Dist > distance[node]:
distance[node] = Dist
heapq.heappush(pqueue, (-Dist, node))
print(distance[n] if distance[n] != -float('inf') else -1)
def read(graph, vis):
a, b, c = map(int, input().split())
if vis[a][b] and graph[a][b] >= c:
return
graph[a][b] = c
vis[a][b] = True
def solve():
n, m = map(int, input().split())
graph = {i: {} for i in range(1, n + 1)}
vis = [[False for j in range(n + 1)] for i in range(n + 1)]
for _ in range(m):
read(graph, vis)
Dijkstra(graph, n)
solve()