标签:pytho online ict append dijstra range pen line ssi
https://leetcode.com/problems/network-delay-time/
class Solution: def networkDelayTime(self, times, N, K): """ :type times: List[List[int]] :type N: int :type K: int :rtype: int """ K-=1 nodes=collections.defaultdict(list) for u,v,w in times: nodes[u-1].append((v-1,w)) dist=[float(‘inf‘)]*N dist[K]=0 done=set() for _ in range(N): smallest=min((d,i) for (i,d) in enumerate(dist) if i not in done)[1] for v,w in nodes[smallest]: if v not in done and dist[smallest]+w<dist[v]: dist[v]=dist[smallest]+w done.add(smallest) return -1 if float(‘inf‘) in dist else max(dist)
Runtime: 152 ms, faster than 83.77% of Python3 online submissions forNetwork Delay Time.
class Solution: def networkDelayTime(self, times, N, K): """ :type times: List[List[int]] :type N: int :type K: int :rtype: int """ h = [(0, K)] res = 0 reached = set() d = {} for u, v, w in times: if u not in d: d[u] = [] d[u].append([v, w]) while h: t, n = heapq.heappop(h) if n not in reached: res = t reached.add(n) if n in d: for v, w in d[n]: if v not in reached: heapq.heappush(h, [t + w, v]) if len(reached) < N: return -1 return res
1.对heapq的模块不熟悉,后面几天着重练习一下堆栈这一块的练习
2.对dijstra算法不熟悉,希望把上面的模块背出来
3.
float(‘inf‘)表示正无穷
float(‘-inf‘)表示负无穷
4.
dist=[float(‘inf‘)]*N
初始化List简单的办法
标签:pytho online ict append dijstra range pen line ssi
原文地址:https://www.cnblogs.com/captain-dl/p/10293460.html