所谓k短路,就是第k短的路。

(逃)

解析

给出一个有向图,求 s−ts-ts−t 的不严格第 k 短的路径。

A*算法

对于一个状态 (x,cost)(x,cost)(x,cost),即到 xxx 时走过长度为 costcostcost,定义一个估价函数:
f=cost+dis(x,t)f=cost+dis(x,t)f=cost+dis(x,t)
以这个为关键字维护优先队列,当 ttt 被访问到第 kkk 次时的估价函数即答案。
最差时间复杂度可以卡到 O(nklog⁡(n))O(nk\log (n))O(nklog(n))。

可持久化可并堆

先在反图任意找到一棵最短路径树
任意一条路径都由若干条树边和非树边组成,每条非树边导致的额外代价是 disv−disu+wdis_v-dis_u+wdisv​−disu​+w。
对于相邻两条非树边 x,yx,yx,y,yyy 的起点必然是 xxx 的终点的祖先或本身。
对于任意一个符合该性质的合法非树边集合,都能双射到一条合法路径上,所以问题就转化成了找到权值第 kkk 小的集合。
还是维护一个优先队列,记录最后一条边的终点和集合总权值。每次弹出队首时,能出现两种新的状态:

  1. 最后一条边被替代成合法且权值比它大的权值最小的边。
  2. 在祖先新增一条权值最小的合法边。

可以对于每个节点维护一个堆,存储起点在自己及其祖先的所以非树边,即可实现2。
对于1,我们直接把其对应的堆节点的左右儿子加入即可。
时间复杂度 O((n+m)log⁡m+klog⁡k)O((n+m)\log m+k\log k)O((n+m)logm+klogk)

模板:k短路(可并堆)相关推荐

  1. [K短路 可持久化堆 最短路径树] JDFZ 2978 第k短路(强)

    链接:https://oj.jdfz.com.cn/oldoj/problem.php?id=2978 鼎爷的[课件]堆的可持久化和k短路 其中每条边的新权值可以形象的理解为走这条边要多花的代价 然后 ...

  2. 【学习笔记】左偏树的可持久化(【模板】k短路 / [SDOI2010]魔法猪学院)

    文章目录 description solution code [模板]k短路 / [SDOI2010]魔法猪学院 description iPig 在假期来到了传说中的魔法猪学院,开始为期两个月的魔法 ...

  3. 第k短路 算法详解(图解)与模板(A* 算法)

    本博文来自bestsort (转载请保留此信息) A*是一种启发式搜索,根据目标地点和当前点的距离和估计要走的步数来决策下一步走哪个方向.而这两个参数,一般用g(x)g(x)g(x)和h(x)h(x) ...

  4. ACM-ICPC 2018 沈阳赛区网络预赛 D. Made In Heaven (K短路算法模板)

    题意 : 求第k短路的权值是否超过T(权值) 解法: 网上随便找的一个求K短路的算法模板套弄一下即可 (模板要好,不然邻接表存图会TLE , 网上换了两个模板才AC的) AC代码: #include& ...

  5. A*算法+最短路实现K短路+模板题

    <font color=black size=4>K短路问题还是很普遍的,了解一下K短路很有必要,顺便学会A*的简单应用更好. A*算法,是一种启发式搜索算法,我们可以自己设定一个估价函数 ...

  6. poj2449 K短路模板题

    昨晚看WC论文发现自己连K短路的经典A*算法还不会,补了一波,模板题输出-1后没return继续跑wa了一早上...... 算法流程: ①在反向图中求出t到每个点的最短路 ②从原点bfs,估价f=d+ ...

  7. 第K短路模板【POJ2449 / 洛谷2483 / BZOJ1975 / HDU6181】

    1.到底如何求k短路的? 我们考虑,要求k短路,要先求出最短路/次短路/第三短路--/第(k-1)短路,然后访问到第k短路. 接下来的方法就是如此操作的. 2.f(x)的意义? 我们得到的f(x)更小 ...

  8. POJ 2449 Remmarguts' Date(k短路模板)

    link:https://vjudge.net/problem/POJ-2449 前面输入与大多最短路题相同 最后一行输入s,t,k 求从s到t的第K短路 wiki link: https://en. ...

  9. A*算法的认识与求第K短路模板

    现在来了解A*算法是什么 现在来解决A*求K短路问题 在一个有权图中,从起点到终点最短的路径成为最短路,第2短的路成为次短路,第3短的路成为第3短路,依此类推,第k短的路成为第k短路.那么,第k短路怎 ...

最新文章

  1. python基础04
  2. 自然语言处理NLP基本知识小结
  3. 认证登录时代来临,主流验证登录方式盘点
  4. iframe js 加载失败_如何提高Vue项目首页的加载速度
  5. 阿里云终端连接与实例管理
  6. thrift (转)
  7. 190606每日一句
  8. aix查询服务器内存序列号_AIX查看cpu_内存序列号
  9. JSP编程技术2-动态标签
  10. 论文笔记——分布式深度学习框架下基于性能感知的DBS—SGD算法
  11. Houdini输出ABC到UE4识别材质
  12. 秒杀系统设计思路与实现
  13. RxJS 6 —— operators
  14. hdu4311 Meeting point-1 求最小的曼哈顿距离和
  15. source test.sh、sh test.sh、./test.sh有什么区别
  16. Java web项目如何在服务器上跑起来(有源码)
  17. 2018年物联网发展的八大趋势!
  18. python中转义是什么意思_python中的转义
  19. java 字母个数字_Java 中字母对应的数字是多少
  20. python判别性别的代码_学习文章—(Python实践)Python实现手机号自动判断男女性别...

热门文章

  1. 这本造价500万的“黑科技”日历,用377张爆美插画给你365天理想生活
  2. ubuntu安装matlab2009,Ubuntu中安装Matlab2010a
  3. python从random生成列表_详解Python利用random生成一个列表内的随机数
  4. oracle中文加密算法,Oracle数据库替代加密算法
  5. android 如何动态设置margin,Android 动态设置margin
  6. websocket文档_WebSocket推送 原理扫盲到上手实践
  7. 四川中级职称计算机考试考b级,四川省职称计算机B级考试1卷
  8. node.js require 自动执行脚本 并生成html,nodejs 执行脚本并实时输出
  9. 文件 单片机_如何查看你写的单片机程序有多大?
  10. 软件构造学习笔记-第八周