次短路 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短路
posted @ 2025-06-03 15:10  katago  阅读(30)  评论(0)    收藏  举报