【[JLOI2011]飞行路线】
据说这是分层图最短路的板子题
但其实就是一个\(dij\)多带了一维状态
我们看到\(k\)很小所以显然我们可以设计一个这样的状态
\(d[v][k]\)表示从起点到点\(v\)免费走了\(k\)条路的最短路是多少
之后向下转移(即普通\(dij\)里的松弛)也很简单,就是有两种选泽,一种是这条路免费走,还有就是这条路不免费走
之后就很简单了
代码
#include<queue>
#include<cstdio>
#include<iostream>
#include<cstring>
#define re register
#define maxn 100001
#define to second.first
#define pre second.second
#define mp make_pair
#define inf 99999999999
#define int long long
using namespace std;
typedef pair<int,int> pi;
typedef pair<int,pi> pii;
priority_queue<pii,vector<pii>,greater<pii> > q;
struct eee
{
int v,nxt,w;
}e[maxn*10];
int d[maxn][21],n,m,head[maxn],num;
int f[maxn][21],t;
inline void add_edge(int x,int y,int z)
{
e[++num].v=y;
e[num].nxt=head[x];
e[num].w=z;
head[x]=num;
}
inline int read()
{
char c=getchar();
int x=0;
while(c<'0'||c>'9') c=getchar();
while(c>='0'&&c<='9')
x=(x<<3)+(x<<1)+c-48,c=getchar();
return x;
}
inline void dijkstra(int s)
{
for(re int i=0;i<n;i++)
for(re int j=0;j<=t;j++)
d[i][j]=inf;
d[s][0]=0;
q.push(mp(0,mp(s,0)));
while(!q.empty())
{
int k=q.top().to;
int pk=q.top().pre;
q.pop();
if(f[k][pk]) continue;
f[k][pk]=1;
for(re int i=head[k];i;i=e[i].nxt)
{
if(d[e[i].v][pk]>d[k][pk]+e[i].w)
{
d[e[i].v][pk]=d[k][pk]+e[i].w;
q.push(mp(d[e[i].v][pk],mp(e[i].v,pk)));
}
if(pk+1<=t&&d[e[i].v][pk+1]>d[k][pk])
{
d[e[i].v][pk+1]=d[k][pk];
q.push(mp(d[e[i].v][pk+1],mp(e[i].v,pk+1)));
}
}
}
}
signed main()
{
n=read();
m=read();
t=read();
int x,y,z;
int ss=read(),tt=read();
for(re int i=1;i<=m;i++)
{
x=read();
y=read();
z=read();
add_edge(x,y,z);
add_edge(y,x,z);
}
dijkstra(ss);
int ans=inf;
for(re int i=0;i<=t;i++)
ans=min(ans,d[tt][i]);
printf("%d\n",ans);
return 0;
}
【[JLOI2011]飞行路线】的更多相关文章
- BZOJ2763[JLOI2011]飞行路线 [分层图最短路]
2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2523 Solved: 946[Submit][Statu ...
- 分层图+最短路算法 BZOJ 2763: [JLOI2011]飞行路线
2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MB Description Alice和Bob现在要乘飞机旅行,他们选择了一家相 ...
- BZOJ 2763: [JLOI2011]飞行路线 最短路
2763: [JLOI2011]飞行路线 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...
- poj 2763: [JLOI2011]飞行路线(spfa分层图最短路)
2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 2156 Solved: 818 [Submit][Statu ...
- Bzoj 2763: [JLOI2011]飞行路线 dijkstra,堆,最短路,分层图
2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1728 Solved: 649[Submit][Statu ...
- Bzoj 2763: [JLOI2011]飞行路线 拆点,分层图,最短路,SPFA
2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1694 Solved: 635[Submit][Statu ...
- [JLOI2011]飞行路线 不同的算法,不同的悲伤
题目 :BZOJ2763 洛谷P4568 [JLOI2011]飞行路线 一道最短路的题目,想想写个题解也不错(好久没写题解了_(:з」∠)_) 然后这道题中心思路是dijikstra处理最短路,所以没 ...
- 洛谷 P4568 [JLOI2011]飞行路线 解题报告
P4568 [JLOI2011]飞行路线 题目描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在\(n\)个城市设有业务,设这些城市分别标记为0到\(n−1\ ...
- bzoj千题计划226:bzoj2763: [JLOI2011]飞行路线
http://www.lydsy.com/JudgeOnline/problem.php?id=2763 这也算分层图最短路? dp[i][j]到城市i,还剩k次免费次数的最短路 #include&l ...
- bzoj 2763: [JLOI2011]飞行路线 -- 分层图最短路
2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MB Description Alice和Bob现在要乘飞机旅行,他们选择了一家相 ...
随机推荐
- Codeforces 949E Binary Cards
Description 给出一个长度为 \(n\) 的数组,求使得用最少数量的 \(2^k\) 或 \(-2^k\) 的数,使得数组中的每一个元素都可以被你选出的 \(2\) 的次幂表示 题面 Sol ...
- [转]Work With Odata in Web API: Create Your First Odata Service
本文转自:http://www.c-sharpcorner.com/UploadFile/dacca2/work-with-odata-in-web-api-create-your-first-oda ...
- [转]Asp.Net Web API 2第十七课——Creating an OData Endpoint in ASP.NET Web API 2(OData终结点)
本文转自:http://www.cnblogs.com/aehyok/p/3545824.html 前言 很久没更新博客了,加上刚过年,现在准备重新开战,继续自己的学习之路.本文已同步到Web API ...
- 禅道和JIRA大对比
转自:https://blog.csdn.net/qq_40543535/article/details/78182636?locationNum=9&fps=1 禅道和JIRA大对比 置顶 ...
- asp get与post获取的区别
1.HTTP请求格式: <request line> <headers> <blank line> [<request-body>] 在HTTP请求中, ...
- npm proxy报错处理
npm经常抽风,动不动安装一个模块就这样了: 提示是否设置了正确的代理地址,解决方法网上有很多,有说取消代理.重新设置代理等等,最简单粗暴解决: 删除nodejs安装路径下面的npmrc文件,再使用淘 ...
- MyBatis 学习(一)
一.MyBatis 1.MyBatis 介绍(百度) MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数 ...
- VirtualBox虚拟机Centos7网络配置
Centos7要实现虚拟机可以链接网络,主机与虚拟机可以互相通过ip地址访问,需要配置两种网卡,两张网卡配置不同的网络链接方式 virtualBox 网络链接讲解地址:https://www.cnbl ...
- unity3d之实现各种滑动效果
一. 点击滑动页面 新建了一个带mask的prefab,加上代码只需要将图片prefab.按钮prefab和所想添加的图片 拖进去会自动生成按钮,滑动速度可以随意调time,滑动效果用itween实现 ...
- 给tomcat7w.exe改名字
在平常使用tomcat的过程中,经常会在自己的电脑上安装两个tomcat,而且使用tomcat的tomcat7w.exe界面比较方便,即 但是两个tomcat的名字一样,也只能启动一个tomcat. ...