GESP二级】飞行路线暂无标签时间限制:CC++ 1000MS其他语言 2000MS内存限制:CC++ 256MB其他语言 512MB难度:中等出题人:描述贝茜想到一个更温暖的地方去度过这个寒冷的冬天。不幸的是她发现只有一家名叫AB的航空公司愿意把票卖给奶牛而且这些票的构成有些奇怪。AB拥有N架飞机每架都有一个特定的飞行路线这个飞行路线包含2个或更多的城市。例如一架飞机的路线可能是从城市1开始然后
思路:
- 首先构建一个城市到所在飞机路线的映射关系,用一个字典来表示,键为城市,值为路线的索引号。
- 然后遍历每一个飞机路线,如果起点和终点都在同一条路线上,直接计算费用并更新最小费用。
- 如果起点和终点不在同一条路线上,找到起点所在的路线和终点所在的路线。
- 对于起点所在的路线,计算从起点到每个城市的最小费用,并保存在一个列表中。
- 对于终点所在的路线,计算从每个城市到终点的最小费用,并保存在一个列表中。
- 遍历所有的城市,如果某个城市同时在起点所在的路线和终点所在的路线中出现,计算从起点到该城市再到终点的费用,并更新最小费用。
- 输出最小费用,如果最小费用为无穷大,则输出-1。 时间复杂度分析:
- 构建映射关系的时间复杂度为O(NL),其中N是飞机路线的数量,L是最长的路线长度。
- 计算最小费用的时间复杂度为O(NL),其中N是飞机路线的数量,L是最长的路线长度。 所以总的时间复杂度为O(NL)。
原文地址: https://www.cveoy.top/t/topic/jdgk 著作权归作者所有。请勿转载和采集!