Number of Ways to Arrive at Destination LeetCode solution in Python
1class Solution:2def countPaths(self, n: int, roads: List[List[int]]) -> int:3graph = defaultdict(dict)4for u, v, w in roads:5graph[u][v] = graph[v][u] = w6dist = {i: float(inf) for i in range(n)}7ways = {i: 0 for i in range(n)}8dist[0], ways[0] = 0, 19heap = [(0, 0)]10while heap:11d, u = heapq.heappop(heap)12if dist[u] < d:13continue14for v in graph[u]:15if dist[v] == dist[u] + graph[u][v]:16ways[v] += ways[u]17elif dist[v] > dist[u] + graph[u][v]:18dist[v] = dist[u] + graph[u][v]19ways[v] = ways[u]20heapq.heappush(heap, (dist[v], v))21return ways[n - 1] % ((10**9) + 7)