You need the cheapest flight from city src to city dst with at most k stops. Each flight has a price. If you use Dijkstra naively, you get the shortest path by price, but that path might have too many stops. This problem adds a constraint: you can't take more than k stops.
The state you track must include both the city AND the number of stops remaining. In standard Dijkstra, state is position. Here, state is (position, stops remaining). That's the core twist.