单源次短路(P2829 大逃离)

这篇博客介绍了在算法问题中处理单源次短路的方法,以P2829 大逃离为例,阐述了如何求解从1和n出发到各点的最短路径,并在遇到直接相连的点时如何跳过,以找到次短路。通过记录点间连接状态和边的权重,实现了算法的实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上似乎没多少单源次短路的学习,今天做了道例题,写一下做法

例题:P2829 大逃离 和 P2865 [USACO06NOV] Roadblocks G

以第一题为例:

  • 我们只需要求出以 1 和 n 为源点各点的最短路,然后枚举每一条边(因为是双向的,所以把他拆成两个有向边)然后比较 $dis[1][x]+dis[2][y]+z$ans 的大小取最小值就行,但是需要注意,如果遇到 dis[1][x]+dis[2][y]+z = dis[1][n] 时要跳过,因为我们求的是次短路 (dis[1][x]表示以1为源点,到x的最短路,dis[2][y]表示以n为源点,到y的最短路,z是边的长度,ans是答案)

这题有一个特殊的地方,就是要处理每个点直接相连的点的个数,直接通过 hav[x][y]记录两个点是否有直接点相连,link[

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值