次短路 k短路
求次短路时,分为简单路径上次短路和普通次短路(可遍历重复点);
普通次短路可以通过一次堆优化dijkstra(朴素版不可行)的过程中时刻维护最大与次大最短路得出;
而简单路径次短路,因为无法遍历重复的点,所以不可用堆dj的方法,朴素的方法是枚举删除最短路上某一条边,每次重跑1~n最短路维护一个min值,这个min值就是次短路。显然此方法效率不高;
具体做法可参考这篇:
https://www.cnblogs.com/WiuehPlus/p/17620315.html
还有一种高效的 O(mlogn)
的方法, 洛谷:P2685 [TJOI2012]桥 ,通过预处理最短路树网络、最短路前驱后继,以最短路上的边为区间建线段树,枚举所有非最短路上的边尝试更新树上区间,最后树中的每一段最小区间的值取max即是次短路的长度。 细节写在博客里
链接:https://www.acwing.com/blog/content/15189/
洛谷P2865 [USACO06NOV] Roadblocks G
洛谷P2829 大逃离
- 可重复路径严格次短路
洛谷P1491 集合位置
- 不可重复路径/简单路径非严格次短路(暴力)
洛谷P2685 [TJOI2012] 桥
- 不可重复路径/简单路径类次短路(线段树)
洛谷P2483 [SDOI2010] 魔法猪学院
- k短路

浙公网安备 33010602011771号