Tell us what’s happening:
The instructions do not match the criteria to pass the test for this step. Assigning list(range(n)) on the else branch as instructed will fail the 4th test which expects just range(n) to be assigned.
Your code so far
INF = float('inf')
adj_matrix = [
[0, 5, 3, INF, 11, INF],
[5, 0, 1, INF, INF, 2],
[3, 1, 0, 1, 5, INF],
[INF, INF, 1, 0, 9, 3],
[11, INF, 5, 9, 0, INF],
[INF, 2, INF, 3, INF, 0],
]
def shortest_path(matrix, start_node, target_node=None):
n = len(matrix)
distances = [INF] * n
distances[start_node] = 0
paths = [[node_no] for node_no in range(n)]
visited = [False] * n
for _ in range(n):
min_distance = INF
current = -1
for node_no in range(n):
if not visited[node_no] and distances[node_no] < min_distance:
min_distance = distances[node_no]
current = node_no
if current == -1:
break
visited[current] = True
for node_no in range(n):
distance = matrix[current][node_no]
if distance != INF and not visited[node_no]:
new_distance = distances[current] + distance
if new_distance < distances[node_no]:
distances[node_no] = new_distance
paths[node_no] = paths[current] + [node_no]
# User Editable Region
targets = [target_node] if target_node is not None else list(range(n))
# User Editable Region
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
Challenge Information:
Implement the Shortest Path Algorithm - Step 20