最便宜的航班路径问题:最多允许 k
次中转
题目描述
给定 n
个城市,城市之间通过一些航班相连接。你需要根据一个航班列表 flights
来计算从源城市 src
到目的城市 dst
的最便宜的价格。每个航班 flights[i] = [fromi, toi, pricei]
表示从城市 fromi
出发,到达城市 toi
,票价为 pricei
。
你可以选择最多 k
次中转,即总共最多经过 k+1
个城市。如果找不到满足条件的航班路径,返回 -1
。
解题分析
问题特点
本题的特点是:
- 图结构:城市之间的航班可以视为一个加权有向图,其中城市是节点,航班是边,边的权重为航班的票价。
- 有限的中转次数:问题要求最多经过
k
次中转,而不是无限次的中转,这意味着我们需要限制路径的长度。 - 寻找最短路径:目标是找到最便宜的路径,即从
src
到dst
的最短路径,但不能超过