(dijkstra算法+多权值)最短路径问题

本文介绍了如何使用Dijkstra算法解决含有边的长度和花费的最短路径问题。通过实例分析和解题思路,阐述了算法的应用,并强调了在处理多个相同距离的路径时要考虑花费因素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。
Input
输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数 s,t;起点s,终点。n和m为0时输入结束。
(1< n< =1000, 0< m< 100000, s != t)
Output
输出 一行有两个数, 最短距离及其花费。
Sample Input
3 2
1 2 5 6
2 3 4 5
1 3
0 0
Sample Output
9 11

分析与解答

这题我调试了八个小时
我总结一下我对dijkstra的认识

1.dijkstra算法可以求从单个源点出发到所有结点的最短路,这个题就是坑到这了,我写两个参数就wrong answer了,就是说,你调用这个函数只需要一个参数,就是起点。终点是n已经固定了,现在你说终点是t,哪怕走到终点n的路不经过t,你输出dis[t],也是从起点到t的最短路。

这里写图片描述

每标记一次就说明被标记的这个数的dis已经确定了。我们循环n次目的就是为了标记n次确定n个数的dis。我们初始化起点的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每天学点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值