Advertisement
Diana_Troinich

Untitled

Jun 25th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.76 KB | None | 0 0
  1. n, m = map(int, input().split())
  2. adj = [[] for _ in range(n)]
  3. for _ in range(m):
  4.     raw = input().split()
  5.     u, v = map(int, raw[:2])
  6.     d = float(raw[-1])
  7.     adj[u].append([v, d])
  8. s, f = map(int, input().split())
  9.  
  10. visited = [False] * n
  11. pre = [None] * n
  12. post = [None] * n
  13. clock = 0
  14.  
  15.  
  16. def dfs(u):
  17.     global clock
  18.     pre[u] = clock
  19.     clock += 1
  20.     visited[u] = True
  21.     for v, _ in adj[u]:
  22.         if not visited[v]:
  23.             dfs(v)
  24.     post[u] = clock
  25.     clock += 1
  26.  
  27.  
  28. for u in range(n):
  29.     if not visited[u]:
  30.         dfs(u)
  31.  
  32. l = [[post[u], u] for u in range(n)]
  33. l.sort()
  34. dist = [float("+inf")] * n
  35. dist[s] = 0
  36.  
  37. for _, u in reversed(l):
  38.     for v, d in adj[u]:
  39.         dist[v] = min(dist[v], dist[u] + d)
  40. print(dist[f])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement