787 K 站中转内最便宜的航班

2023-10-18 23:40
文章标签 航班 便宜 中转 787

本文主要是介绍787 K 站中转内最便宜的航班,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述:
有 n 个城市通过 m 个航班连接。每个航班都从城市 u 开始,以价格 w 抵达 v。
现在给定所有的城市和航班,以及出发城市 src 和目的地 dst,你的任务是找到从 src 到 dst 最多经过 k 站中转的最便宜的价格。 如果没有这样的路线,则输出 -1。

示例 1:
输入:
n = 3, edges = [[0,1,100],[1,2,100],[0,2,500]]
src = 0, dst = 2, k = 1
输出: 200

解释:
城市航班图如下
在这里插入图片描述
示例 2:
输入:
n = 3, edges = [[0,1,100],[1,2,100],[0,2,500]]
src = 0, dst = 2, k = 0
输出: 500
解释:
城市航班图如下
在这里插入图片描述
从城市 0 到城市 2 在 0 站中转以内的最便宜价格是 500,如图中蓝色所示。

提示:
n 范围是 [1, 100],城市标签从 0 到 n - 1
航班数量范围是 [0, n * (n - 1) / 2]
每个航班的格式 (src, dst, price)
每个航班的价格范围是 [1, 10000]
k 范围是 [0, n - 1]
航班没有重复,且不存在自环

方法1:
主要思路:解题汇总链接
(1)使用广度优先搜索;
(2)先将给定的航线转成有向图的邻接表进行存储,使用一个数组存储到各个地方的耗费,初始值置为最大INT_MAX;
(3)使用队列将出发点存储到队列中初始化,然后将每次中转中可以的到达的各个地方的耗费进行更新,获得当前中转下,各个地方的最小的耗费;
(4)注意在每次中转时,使用临时数组保存该次中转的结果,避免相互覆盖;
(5)直到最后中转次数用完,或队列为空;

class Solution {
public:int findCheapestPrice(int n, vector<vector<int>>& flights, int src, int dst, int K) {if(dst==src ){//起始点既终点,则直接返回0return 0;}vector<vector<pair<int,int>>> mp(n);//存储邻接表,元素同时存储了对应的耗费for(vector<int>& f:flights){mp[f[0]].push_back({f[1],f[2]});}vector<int> dist(n,INT_MAX);//初始值,到达各个点的耗费,初始值置为INT_MAXdist[src]=0;//起始点初始化queue<int> q;q.push(src);//队列初始化while(K-->=0&&!q.empty()){//终止条件int cur_size=q.size();//当前中转下,要是用的航站vector<int>tmp=dist;//辅助变量,存储该次中转下获得结果while(cur_size--){//当前中转下的各个航站遍历int cur_pos=q.front();//当前航站q.pop();for(pair<int,int>&p:mp[cur_pos]){//遍历各个可以到达的地方if(tmp[p.first]>dist[cur_pos]+p.second){//判断是否需要更新tmp[p.first]=dist[cur_pos]+p.second;q.push(p.first);//将更新过的航站重新放入队列,重新计算到达各个 位置的耗费}}}dist=tmp;//更新耗费}return dist[dst]==INT_MAX?-1:dist[dst];}
};

这篇关于787 K 站中转内最便宜的航班的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/235846

相关文章

最近2个月捡漏买到很便宜但是很好用的几样物品

纯分享得瑟贴子哈哈 做为一个mou鱼和多多的重度用户,我日常生活的一个乐趣就是捡漏,日常说法也可以叫喜欢买便宜货,下面我列举一些最近2个月买到过的很值的东西: 电动摩托车380元,之前在多多买了一个类似的1500,但是由于商家给我发错了型号所以退了,然后后来机缘巧合,买到了这个,前主人买了一年了,骑的次数非常少,所以很新,轮胎胎毛都还在。 每日通勤成本一下子降低到了5毛钱,还不用忍受堵车

盘点大模型中转 API 平台,并比较费用

1. 大模型中转 API 平台集合 1.1 DevAGI DevAGI开放平台 Open AI 价格 1.2 Deepbricks 官网价格 1.3 AiHubMix AiHubMix 官网 使用教程 价格: 1.4 WildCard 开卡订阅 WildCard官网 价格 有3.5% 的充值手续费,API 价格与 Open AI 一样 2. 价格对比 OpenAI

vim中搜索,Vim中转到特定行

一、使用行号跳转: Vim中最基本的定位方法之一是使用行号进行跳转。要跳转到特定行,只需按下冒号(:)键,然后输入行号,接着按下回车键即可。例如,要跳转到第50行,只需输入:50,然后按下回车。这种方法适用于小型文件,但在大型文件中可能显得有些麻烦。 二、使用搜索功能: Vim的搜索功能也是一种有效的定位方式。按下斜杠(/)键,然后输入您要查找的内容,再次按下回车。Vim将会定位到第一个匹配的结

【通过h5作为中转页跳转到微信小程序】

1。从小程序跳转小程序内部页面 <!DOCTYPE html><html><head><title>H5跳转小程序</title><meta charset="UTF-8"><meta name="viewport"content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user

微信公众号网页授权中转功能-解决网页授权域名个数限制-通过已授权的域名进行中转...

微信公众号网页授权中转功能 解决网页授权域名个数限制 通过已授权的域名进行中转 thinkphp8代码 route下 // 微信公众号授权中转Route::get('connect/oauth2/authorize', 'WechatOfficial/GetConnectOauth2Authorize');// 通过code换取网页授权access_tokenRoute::get('sn

广州.Net培训价格最便宜的是那家?

广州.Net培训价格最便宜的是那家?   一直以来广州传智播客培训中心都以培养最优人才为己任,为企业提供最合适的人才,为社会培养栋梁,传智播客培养的软件开发人才受到社会及企业的广泛赞赏和认同,很多学员已成为众多国际国内知名IT企业的抢手人才或技术骨干。   广州.Net培训价格最便宜的是那家?当然首选广州传智播客培训中心拉,不着急,现在就告诉你是为什么选择广州传智播客培训中心吧?

hadoop入门--使用Apache Pig统计每个航班班次

案例基于hadoop 2.73,伪分布式集群 1,数据包导入hadoop集群hdfs的/user/root目录下 hdfs dfs -copyFromLocal 2008.csv /user/root 2,编写totalmiles.pig脚本 records = LOAD '2008.csv' USING PigStorage(',') AS(Year,Month,DayofMont

hadoop入门--使用MapReduce统计每个航班班次

案例基于hadoop 2.73,伪分布式集群 一,创建一个MapReduce应用 MapReduce应用结构如图: 1、引入maven依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="

“华为杯”第十五届中国研究生数学建模竞赛-F题:机场新增卫星厅对中转旅客影响的研究(下)(附C++代码实现)

目录 附录: 附录 1、问题的求解 附录 2、数据预处理  本文篇幅较长,分为上中下三篇,文章索引详见: 机场新增卫星厅对中转旅客影响的研究 机场新增卫星厅对中转旅客影响的研究(中) 机场新增卫星厅对中转旅客影响的研究(下)

基于springboot websocket和okhttp实现消息中转

1、业务介绍 消息源服务的消息不能直接推给用户侧,用户与中间服务建立websocket连接,中间服务再与源服务建立websocket连接,源服务的消息推给中间服务,中间服务再将消息推送给用户。流程如下图: 此例中我们定义中间服务A的端口为8082,消息源头服务B的端口为8081,方便阅读下面代码。 说明:此例子只实现了中间服务的转发,连接的关闭等其他逻辑并没有完善,如需要请自行完善; 2、中