# Reconstruct the shortest path shortestPath = list initialized as empty currentVertex = 0 while currentVertex != -1: append currentVertex to shortestPath currentVertex = path[ currentVertex ] return shortestPath , distance[0] # Example usage graph = [ [infinity, 1, 2, infinity, infinity, infinity], [infinity, infinity, infinity, 3, 4, infinity], [infinity, infinity, infinity, 6, 5, infinity], [infinity, infinity, infinity, infinity, infinity, 2], [infinity, infinity, infinity, infinity, infinity, 1], [infinity, infinity, infinity, infinity, infinity, infinity] ] stages = [1, 2, 2, 3, 3, 4] shortestPath , cost = multistageGraphShortestPath (graph, stages) print("Shortest Path:", shortestPath ) print("Cost:", cost)