概述
题目保证最短路不止一条,求经过路径最少的最短路.
分析:假设数据小的话能够用floyed+Dp求出,在保证最短路的情况下更新路径少的情况就可以。dis表示最短路,大盘dp[i,j]表示从i到j的最短路所需最少路径条数;但一旦数据大于300,非常有超时危急,以下是一个小技巧:将边权乘以10^8后+1(注意乘以几要视数据大小而定),再用高效的spfa或堆优化的dijkstra来跑。
为什么呢?举个样例:假定边数不超过100000(10的5次方),而边权*10^8后能够说远大于它,那么在更新最短路时+1会算入距离,就能够将其视为路径数。随最短路更新而自己主动更新。
最后跑完后取出走后几位数就可以,即为经过路径最少的最短路的经过路径数。
最后
以上就是隐形高山为你收集整理的求经过路径最少的最短路的全部内容,希望文章能够帮你解决求经过路径最少的最短路所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复