Minimum Cost to Reach Destination in a Weighted Graph
You are given a weighted graph represented by an adjacency matrix graph where graph[i][j] represents the cost to move from node i to node j.
Each node is labeled from 0 to n-1.
You are also given two nodes source and destination.
Find the minimum cost to reach the destination node from the source node.
If there is no path from the source to the destination, return -1.
Function Signature:
from typing import List
def min_cost_to_reach_destination(graph: List[List[int]], source: int, destination: int) -> int:
"""
Find the minimum cost to reach the destination node from the source node.
Parameters:
- graph: A weighted graph represented by an adjacency matrix.
- source: The source node.
- destination: The destination node.
Returns:
- int: The minimum cost to reach the destination node, or -1 if there is no path.
"""
# Your code here
Example:
graph = [
[0, 10, 20, 0],
[0, 0, 5, 10],
[0, 0, 0, 20],
[0, 0, 0, 0]
]
result = min_cost_to_reach_destination(graph, 0, 3)
print(result) # Output: 20
assert result == 20 # Path: 0 --> 1 --> 3
result = min_cost_to_reach_destination(graph, 3, 0)
print(result) # Output: -1
assert result == -1 # No path
graph = [
[0, 10, 20, 0],
[0, 0, 5, 10],
[0, 0, 0, 2],
[0, 0, 0, 0]
]
result = min_cost_to_reach_destination(graph, 0, 3)
print(result) # Output: 17
assert result == 17 # Path: 0 --> 1 --> 2 --> 3
Instructions:
- Write the
min_cost_to_reach_destinationfunction to solve the problem. - Implement your solution in Python.
- Provide clear comments in your code.
- Discuss the time and space complexity of your solution.
As always, we’ll share our solution to this problem tomorrow. Stay tuned 😊