Python 堆优化Dijkstra TLE 求助!
  • 板块P1807 最长路
  • 楼主SwordRain
  • 当前回复2
  • 已保存回复3
  • 发布时间2024/1/20 14:11
  • 上次更新2024/1/20 17:05:18
查看原帖
Python 堆优化Dijkstra TLE 求助!
1077867
SwordRain楼主2024/1/20 14:11

样例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()
2024/1/20 14:11
加载中...