1. 解题思路
这一题思路上就是一个宽度优先的遍历,我们在存储每一条线段的时候都将正负向的线段存储下来,反向的线段的cost无非就是原始权重的两倍,然后我们进行bfs考察到达终点的最优路线即可。
2. 代码实现
给出python代码实现如下:
class Solution:
def minCost(self, n: int, edges: List[List[int]]) -> int:
graph = defaultdict(list)
for u, v, w in edges:
graph[u].append((v, w))
graph[v].append((u, 2*w))
q = [(0, 0)]
seen = set()
while q:
d, u = heapq.heappop(q)
if u == n-1:
return d
if u in seen:
continue
seen.add(u)
for v, w in graph[u]:
if v in seen:
continue
heapq.heappush(q, (d+w, v))
return -1
提交代码评测得到:耗时617ms,占用内存74.78MB。

被折叠的 条评论
为什么被折叠?



