2022-03-27 18:35:17 +08:00
< p > There are < code > n< / code > cities connected by some number of flights. You are given an array < code > flights< / code > where < code > flights[i] = [from< sub > i< / sub > , to< sub > i< / sub > , price< sub > i< / sub > ]< / code > indicates that there is a flight from city < code > from< sub > i< / sub > < / code > to city < code > to< sub > i< / sub > < / code > with cost < code > price< sub > i< / sub > < / code > .< / p >
< p > You are also given three integers < code > src< / code > , < code > dst< / code > , and < code > k< / code > , return < em > < strong > the cheapest price< / strong > from < / em > < code > src< / code > < em > to < / em > < code > dst< / code > < em > with at most < / em > < code > k< / code > < em > stops. < / em > If there is no such route, return< em > < / em > < code > -1< / code > .< / p >
< p > < / p >
2023-12-09 18:42:21 +08:00
< p > < strong class = "example" > Example 1:< / strong > < / p >
2022-03-27 18:35:17 +08:00
< img alt = "" src = "https://assets.leetcode.com/uploads/2022/03/18/cheapest-flights-within-k-stops-3drawio.png" style = "width: 332px; height: 392px;" / >
< pre >
< strong > Input:< / strong > n = 4, flights = [[0,1,100],[1,2,100],[2,0,100],[1,3,600],[2,3,200]], src = 0, dst = 3, k = 1
< strong > Output:< / strong > 700
< strong > Explanation:< / strong >
The graph is shown above.
The optimal path with at most 1 stop from city 0 to 3 is marked in red and has cost 100 + 600 = 700.
Note that the path through cities [0,1,2,3] is cheaper but is invalid because it uses 2 stops.
< / pre >
2023-12-09 18:42:21 +08:00
< p > < strong class = "example" > Example 2:< / strong > < / p >
2022-03-27 18:35:17 +08:00
< img alt = "" src = "https://assets.leetcode.com/uploads/2022/03/18/cheapest-flights-within-k-stops-1drawio.png" style = "width: 332px; height: 242px;" / >
< pre >
< strong > Input:< / strong > n = 3, flights = [[0,1,100],[1,2,100],[0,2,500]], src = 0, dst = 2, k = 1
< strong > Output:< / strong > 200
< strong > Explanation:< / strong >
The graph is shown above.
The optimal path with at most 1 stop from city 0 to 2 is marked in red and has cost 100 + 100 = 200.
< / pre >
2023-12-09 18:42:21 +08:00
< p > < strong class = "example" > Example 3:< / strong > < / p >
2022-03-27 18:35:17 +08:00
< img alt = "" src = "https://assets.leetcode.com/uploads/2022/03/18/cheapest-flights-within-k-stops-2drawio.png" style = "width: 332px; height: 242px;" / >
< pre >
< strong > Input:< / strong > n = 3, flights = [[0,1,100],[1,2,100],[0,2,500]], src = 0, dst = 2, k = 0
< strong > Output:< / strong > 500
< strong > Explanation:< / strong >
The graph is shown above.
The optimal path with no stops from city 0 to 2 is marked in red and has cost 500.
< / pre >
< p > < / p >
< p > < strong > Constraints:< / strong > < / p >
< ul >
< li > < code > 1 < = n < = 100< / code > < / li >
< li > < code > 0 < = flights.length < = (n * (n - 1) / 2)< / code > < / li >
< li > < code > flights[i].length == 3< / code > < / li >
< li > < code > 0 < = from< sub > i< / sub > , to< sub > i< / sub > < n< / code > < / li >
< li > < code > from< sub > i< / sub > != to< sub > i< / sub > < / code > < / li >
< li > < code > 1 < = price< sub > i< / sub > < = 10< sup > 4< / sup > < / code > < / li >
< li > There will not be any multiple flights between two cities.< / li >
< li > < code > 0 < = src, dst, k < n< / code > < / li >
< li > < code > src != dst< / code > < / li >
< / ul >