版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
版权
刷题学习同时被 2 个专栏收录
33 篇文章0 订阅
订阅专栏
15 篇文章0 订阅
订阅专栏
Dijkstra用来就最短路径,在保证最短路径的条件下,可新增一些其他标尺。
1.每个结点拥有点权,在最短路劲的条件下求点权和最大的路劲。
2.每条边新增边权cost,在最短路径的条件下求cost和最小的路径。
3.求最短路径的条数。
问题1,3可参考我的另一篇文章:
https://blog.csdn.net/qq_39304201/article/details/80176476
关键是建立num数组与maxWeight数组。num[i]表示从起点到结点i的最短路径条数,maxWeight[i]表示起点到结点i最大权值和。在更新最短路径时同时更新这两个数组即可。
问题2与问题1差不多,建立cost[]数组,求起点到每个结点i的最小花费cost[i];
问题1代码:
#includeconst int MAX = 999999; using namespace std; void findPath(int dest,int *p) { if(p[dest] == -1) { cout