博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[BZOJ1576]安全路经Travel
阅读量:4558 次
发布时间:2019-06-08

本文共 347 字,大约阅读时间需要 1 分钟。

题目大意:从1号点出发,到每个点的最短路的最后一条边不能被访问,求此时1号点到其他点的最短路

建立最短路树,对于一条非树边,把它加进去会形成一个环和一条链,如图:

 

即红色和蓝色路径构成的图,它的长度为$len=dis[x]+dis[y]+w[x][y]$,对于这个环上的任意一点$i$,我们都可以用$len-dis[i]$来更新答案。

如果我们把$len$按从小到大排序,显然每对$(x,y)$只会更新环内没被更新的点,这时我们可以用并查集加速维护

因为每个点只会被更新一次,所以更新完后这个点就没有再被访问的必要,直接把这个点的父亲指向这个环的$LCA$即可(因为环内的点已经全部被更新完了) 

 

转载于:https://www.cnblogs.com/Slrslr/p/9609518.html

你可能感兴趣的文章
python 3 廖雪峰博客笔记(一) python特性
查看>>
JAVA学习心得
查看>>
[转]推荐highcharts学习网址
查看>>
centos7下自定义服务启动和自动执行脚本
查看>>
docker上部署nginx容器80端口自动转443端口
查看>>
ps命令查看子进程
查看>>
2019春第七周编程总结
查看>>
angularjs1-7,http,location
查看>>
sass01
查看>>
Java 8 Lambda 表达式
查看>>
codeblocks 教程
查看>>
微信小微商户申请入驻
查看>>
Java的并发和多处理器的并行的理解
查看>>
1178.复数集合
查看>>
1174.查找第k小数
查看>>
优先队列(堆)
查看>>
C语言中函数参数传递的本质是值传递
查看>>
noip2018游记
查看>>
redis分布式锁
查看>>
判断手机andriod还是iphone
查看>>