#分层图最短路,Dijkstra#洛谷 4568 [JLOI2011]飞行路线
题目
一个无向图,每条边都有花费,可以有\(k\)次挑选边去除花费的机会,问从指定起点到指定终点的最小花费
分析
考虑用分层最短路完成,也就是在同一层走需要花费,不同层走不用花费,最终走到最底层,然后需要建\(k\)层,再跑一个\(\text{Dijkstra}\)就可以了
代码
#include <cstdio>
#include <cctype>
#include <queue>
#include <cstring>
#define rr register
#define min(a,b) ((a)<(b)?(a):(b))
using namespace std;
const int N=110011;
struct rec{
int w,u;
bool operator <(const rec &t)const{
return w>t.w;
}
};
struct node{int y,w,next;}e[N*20]; bool v[N];
int n,m,cnt,k,st,en,ans,ls[N],dis[N];
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline void add(int x,int y,int w){e[++cnt]=(node){y,w,ls[x]},ls[x]=cnt;};
priority_queue<rec>q;
signed main(){
n=iut(),m=iut(),k=iut(),st=iut()+1,en=iut()+1;
for (rr int i=1;i<=m;++i){
rr int x=iut()+1,y=iut()+1,w=iut();
add(x,y,w),add(y,x,w);
for (rr int j=1;j<=k;++j){
add(x+j*n,y+j*n,w),add(x+j*n-n,y+j*n,0),
add(y+j*n,x+j*n,w),add(y+j*n-n,x+j*n,0);
}
}
memset(dis,42,sizeof(dis)),dis[st]=0;
q.push((rec){0,st}),ans=dis[0];
while (q.size()){
rr rec t=q.top(); rr int x=t.u,now=t.w; q.pop();
if (dis[x]!=now||v[x]) continue; v[x]=1;
for (rr int i=ls[x];i;i=e[i].next)
if (dis[e[i].y]>dis[x]+e[i].w){
dis[e[i].y]=dis[x]+e[i].w;
q.push((rec){dis[e[i].y],e[i].y});
}
}
for (rr int i=0;i<=k;++i) ans=min(ans,dis[i*n+en]);
return !printf("%d",ans);
}
#分层图最短路,Dijkstra#洛谷 4568 [JLOI2011]飞行路线的更多相关文章
- 洛谷 4568 [JLOI2011] 飞行路线
题目戳这里 一句话题意: 有n个点,m条边的有向图,最多可以把k条边变为0,求从起点到终点最短距离. Solution 首先看到这题目,感觉贼难,看起来像DP,貌似也有大佬这么做,但鉴于本蒟蒻思维能力 ...
- BZOJ 1579: [Usaco2009 Feb]Revamping Trails 道路升级 分层图最短路 + Dijkstra
Description 每天,农夫John需要经过一些道路去检查牛棚N里面的牛. 农场上有M(1<=M<=50,000)条双向泥土道路,编号为1..M. 道路i连接牛棚P1_i和P2_i ...
- [洛谷P4568][JLOI2011]飞行路线
题目大意:最短路,可以有$k$条边无费用 题解:分层图最短路,建成$k$层,层与层之间的边费用为$0$ 卡点:空间计算出错,建边写错 C++ Code: #include <cstdio> ...
- 洛谷 P4568 [JLOI2011]飞行路线 解题报告
P4568 [JLOI2011]飞行路线 题目描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在\(n\)个城市设有业务,设这些城市分别标记为0到\(n−1\ ...
- 洛谷 P4568 [JLOI2011]飞行路线 题解
P4568 [JLOI2011]飞行路线 题目描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在\(n\)个城市设有业务,设这些城市分别标记为\(0\)到\( ...
- 洛谷 P4568 [JLOI2011]飞行路线
题目描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的 ...
- 分层图最短路【bzoj2763】: [JLOI2011]飞行路线
bzoj2763: [JLOI2011]飞行路线 Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0 ...
- 2019牛客多校第四场J free——分层图&&最短路
题意 一张无向图,每条边有权值,可以选择不超过 $k$ 条路使其权值变成0,求 $S$ 到 $T$ 的最短路.(同洛谷 P4568) 分析 首先,分层图最短路可以有效解决这种带有 「阶段性」的最短路, ...
- poj3635Full Tank?[分层图最短路]
Full Tank? Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7248 Accepted: 2338 Descri ...
- BZOJ_2662_[BeiJing wc2012]冻结_分层图最短路
BZOJ_2662_[BeiJing wc2012]冻结_分层图最短路 Description “我要成为魔法少女!” “那么,以灵魂为代价,你希望得到什么?” “我要将有关魔法和奇迹的一切, ...
随机推荐
- udp循环发消息,sockerserver,文件校验,服务器合法性校验---day29
1.udp循环发消息 # ### 客户端 import socket sk = socket.socket(type=socket.SOCK_DGRAM) while True: #发送消息 mess ...
- os.path.relpath和os.path.basename,返回文件路径中的文件名
from os import path print(path.relpath("/home/hpcadmin/lw/demo.py", start="/home/hpca ...
- 对find命令结果进行操作
# find匹配到一些文件后,可能希望对其进行一些操作,这时就可以使用-exec选项,exec选项后面跟着所要执行的命令,然后是一对{},一个空格和一个\,最后是一个分号; find . -type ...
- 【Python语法糖】闭包和装饰器
Python闭包和装饰器 参考: https://zhuanlan.zhihu.com/p/453787908 https://www.bilibili.com/video/BV1JW411i7HR/ ...
- 名校 AI 课程|斯坦福 CS25:Transformers United 专题讲座
自 2017 年提出后,Transformer 名声大噪,不仅颠覆了自然语言处理(NLP)领域,而且在计算机视觉(CV).强化学习(RL).生成对抗网络(GANs).语音甚至是生物学等领域也大显锋芒, ...
- maven创建父子工程
目录 创建父工程 创建子工程 将项目编译为eclipse项目 将项目导入eclipse 修改依赖关系:service依赖dao,web依赖service JavaProject的pom.xml文件说明 ...
- Jmeter 响应断言你知道多少?
1 断言各组件介绍 Apply to:同上 测试字段: * 响应文本:响应体 * 响应代码:响应状态码 * 响应信息:状态码的消息 * 响应头:顾名思义就是响应头 * 请求头:顾名思义就是请求头 * ...
- Java 递归方法的使用 + 例子
1 /* 2 * 递归方法的使用 3 * 1.递归方法:一个方法体内调用它自身 4 * 2.方法递归包含了一种隐式的循环,它会重复执行某段代码,但这种重复执行无须循环控制 5 * 递归一定要想已知方向 ...
- Codeforces Round 260 (Div. 1)A. Boredom(dp)
最开始写了一发贪心wa了,然后这种选和不选的组合优化问题,一般是考虑动态规划 \(dp[i][0]:\)表示第i个数不选的最大值 \(dp[i][1]:\)表示第i个数选的最大值 考虑转移: \(dp ...
- 机器学习从入门到放弃:卷积神经网络CNN(二)
一.前言 通过上一篇文章,我们大概了解了卷积是什么,并且分析了为什么卷积能在图像识别上起到巨大的作用.接下来,废话不多话,我们自己尝试动手搭建一个简易的CNN网络. 二.准备工作 在开始的时候,我们首 ...