Cheapest flight within K stops

Graphs Shortest Path Algorithms Hard

There are n cities and m edges connected by some number of flights. Given an array of flights where flights[i] = [ fromi, toi, pricei] indicates that there is a flight from city fromi to city to with cost price. Given three integers src, dst, and k, and return the cheapest price from src to dst with at most k stops. If there is no such route, return -1.

Examples:


Input: n = 4, flights = [[0,1,100],[1,2,100],[2,0,100],[1,3,600],[2,3,200]], src = 0, dst = 3, k = 1

Output: 700

Explanation: The optimal path with at most 1 stops 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.


Input: n = 3, flights = [[0,1,100],[1,2,100],[0,2,500]], src = 0, dst = 2, k = 1

Output: 200

Explanation:The optimal path with at most 1 stops from city 0 to 2 is marked in red and has cost 100 + 100 = 200.

Input: n = 3, flights = [[0, 1, 100], [1, 2, 100], [0, 2, 500]], src = 0, dst = 2, k = 0 

Constraints

  •   1 <= n <= 100
  •   0 <= flights.length <= (n * (n - 1) / 2)
  •    flights[i].length == 3
  •   0 <= fromi, toi < n
  •   fromi != toi
  •   1 <= pricei <= 104
  •   There will not be any multiple flights between the two cities.
  •   0 <= src, dst, k < n

Hints

  • Since we must limit the number of stops (k), a BFS-like approach with a priority queue (similar to Dijkstra’s) is ideal. Instead of using a standard dist[] array (which tracks the shortest path without considering stops), we use a tuple (cost, node, stops) in a min-heap (priority queue).
  • If we reach dst within k+1 levels (since k refers to intermediate stops, not total edges), return the cost.

Company Tags

OYO Rooms Cerner AMD Cloudflare HCL Technologies Zomato Walmart Pinterest Twilio PwC JPMorgan Chase Ubisoft eBay Bungie Freshworks Roche Instacart McKinsey & Company IBM Deloitte Intel Mastercard Teladoc Health NVIDIA Epic Games Google Microsoft Amazon Meta Apple Netflix Adobe