Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from queue import Queue
- def dijkstra(G):
- for i in range(len(matrix[G])):
- if matrix[G][i] >= 0:
- dist[i] = matrix[G][i]
- qeueu.put(i)
- dist[G] = 0
- while qeueu:
- first_el = qeueu.get()
- for i in range(len(matrix[first_el])):
- if matrix[first_el][i] > 0:
- if dist[i] > dist[first_el] + matrix[first_el][i]:
- dist[i] = dist[first_el] + matrix[first_el][i]
- qeueu.put(i)
- N, S, F = map(int, input().split())
- S -= 1
- F -= 1
- matrix = [list() for _ in range(N)]
- for i in range(N):
- matrix[i] = list(map(int, input().split()))
- dist = [10 ** 100] * N
- used = [False] * N
- qeueu = Queue()
- dijkstra(S)
- if dist[F] == 10 ** 100:
- print(-1)
- else:
- print(dist[F])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement