关于Dijkstra算法的总结

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

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

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

你可能感兴趣的:(天梯赛,数据结构图论)