一共三道题,一道都没写出来。。。(所以只看了第一道题的题目)
第一道题想了10分钟才发现是最短路问题,然后考虑了下,决定用堆优化版的dijkstra。然后实现dijkstra有点想不起来了,写了2,30分钟。然后又发现建图过程出了问题(其实就是把点与点距离转换成边放进去,但一直没有思考清楚哪些点可以到,哪些点能到,哪些不能到),半个小时过去了,相连通的点转换成边初始这个一直每整好,思维还是不清晰。
最后晚上又花了半个多小时整出来了,只试了图上的两个测试样例。
from heapq import *
N,NULL = 1000010,0x3f3f3f3f
h, e, ne, w, idx = [-1] * N, [0] * N, [0] * N, [0] * N, 0
dist, st = [NULL]*N, [False]*N
class Solution:
def add(self,a,b,c):
global idx
e[idx], ne[idx], w[idx], h[a], idx = b, h[a], c, idx, idx+1
print(a,b,c)
def dijkstra_heap(self, n):
heap = []
heappush(heap,(0,1))
dist[1] = 0
while heap:
distance, t