关于Dijkstra算法的总结

1.只考虑Dijkstra算法模板,不加入其他条件,要想清楚其贪心的过程,对于一个点,可能有在出现最短路径前有了其他路径,但不是最短的,也可能多条路径过来都是最短路,但通到此点的最短路均出现前此点肯定不会去更新其他点,因为更新此点的路径肯定比该点的距离短。一般用book数组标记一个点是不是已经为最短要去更新其他点,因为队列中可能有之前不是最短路径的情况,虽然不用book没关系,反正这个不是最短路径的记录无法去更新,但是费时。

2.对于要求当出现多个最短路径,要字典序最小的情况,用到pre数组,对于当前路径更新的,就存更新此点的那个点。对于又出现的一个最短路径,按照更新此点的点的字母大小存

3.对于紧急救援这个题,用到book数组,原因同上。另外优先队列按照距离和救援队数量来决定优先级,基于不是多条路径过来都是最短路的情况,取救援队最多的。另外,路径的条数计算也要注意,只要是到此点的最短路径就要加上,不管是不是救援队最多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值