32 lines
746 B
Python
32 lines
746 B
Python
def pure_dijkstra(nodes, adj, start, end):
|
|
dist = [float('inf')] * nodes
|
|
dist[start] = 0
|
|
visited = [False] * nodes
|
|
|
|
cur = start
|
|
|
|
while True:
|
|
if cur == -1:
|
|
break
|
|
|
|
if cur == end:
|
|
break
|
|
|
|
for next, d in adj[cur]:
|
|
if not visited[next]:
|
|
new = dist[cur] + d
|
|
if new < dist[next]:
|
|
dist[next] = new
|
|
|
|
visited[cur] = True
|
|
|
|
# Finding min node
|
|
min_node = -1
|
|
min_val = float('inf')
|
|
for n in range(nodes):
|
|
if not visited[n] and dist[n] < min_val:
|
|
min_node = n
|
|
min_val = dist[n]
|
|
cur = min_node
|
|
|
|
return dist[end] |