Luogu P4568 [JLOI2011] 飞行路线 题解 最短路 Dijkstra

本文介绍了解决LuoguP4568中的飞行路线问题,通过扩展Dijkstra算法,计算在最多k条边权重变为0的情况下,起点s到终点t的最短路径。涉及状态变量j表示已改变的边数,通过二维距离数组实现动态调整。

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

题目链接:Luogu P4568 [JLOI2011] 飞行路线
题目描述:

给定一张带权无向图,以及起点s和终点t,可以选择将最多k条边的权值变为0,问st的最短路径。

题解:

只需要在求单源最短路的时候增加一个状态j表示当前将几条边边权变成了0,通过将距离数组变成二维,dis[i][j]表示sij条边边权变为0后的最短路。
s为起点进行Dijkstra,对于当前正在遍历的状态(u, j)设与其相连的一个结点为v边权为w,则可以得到:dis[v][j] = min(dis[u][j] + w)表示不将w变成0此时新的状态为(v, j);若j<k则表明还可以将边变为0,此时还有一种更新方式,即dis[v][j+1] = min(dis[u][j])此时新的状态为(v, j+1)
最终的答案只需要min(dis[t][j])即可。

代码:LuoguP4568

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值