Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- n, m = map(int, input().split())
- adj = [[] for _ in range(n)]
- for _ in range(m):
- raw = input().split()
- u, v = map(int, raw[:2])
- d = float(raw[-1])
- adj[u].append([v, d])
- s, f = map(int, input().split())
- visited = [False] * n
- pre = [None] * n
- post = [None] * n
- clock = 0
- def dfs(u):
- global clock
- pre[u] = clock
- clock += 1
- visited[u] = True
- for v, _ in adj[u]:
- if not visited[v]:
- dfs(v)
- post[u] = clock
- clock += 1
- for u in range(n):
- if not visited[u]:
- dfs(u)
- l = [[post[u], u] for u in range(n)]
- l.sort()
- dist = [float("+inf")] * n
- dist[s] = 0
- for _, u in reversed(l):
- for v, d in adj[u]:
- dist[v] = min(dist[v], dist[u] + d)
- print(dist[f])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement