bzoj2763: [JLOI2011]飞行路线(分层图spfa)
2763: [JLOI2011]飞行路线
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 3234 Solved: 1235
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
0 4
0 1 5
1 2 5
2 3 5
3 4 5
2 3 3
0 2 100
Sample Output
HINT
对于30%的数据,2<=n<=50,1<=m<=300,k=0;
对于50%的数据,2<=n<=600,1<=m<=6000,0<=k<=1;
对于100%的数据,2<=n<=10000,1<=m<=50000,0<=k<=10.
/*
分层图最短路
核心思想是我也不知道
大概就是d[i][j]表示到i这个点用j条边权为0的最短路
每次更新的时候先更新当前边不设免费道路的,在更新设最短路的。
最后答案取小。因为啊,若可以设k条免费道路,有一条路径长度小于k,那d[n][k]可能不是正确答案
以为d[][k]表示一定设了k条免费道路嘛~
*/
#include<iostream>
#include<cstdio>
#include<cstring> #define N 10001
#define M 100001 using namespace std;
int head[N],d[N][],q[M][];
bool inq[N][];
int n,m,k,st,ed,cnt;
struct edge
{
int u,to,dis,next;
}e[M]; inline int read()
{
int x=,f=;char c=getchar();
while(c>''||c<''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} inline void add(int u,int to,int dis)
{
e[++cnt].to=to;e[cnt].dis=dis;e[cnt].next=head[u];head[u]=cnt;
} void spfa()
{
memset(d,/,sizeof d);
int he=,ta=;
q[][]=st;q[][]=;
inq[st][]=;d[st][]=;
while(he!=ta)
{
int now=q[he][],tmp=q[he++][];inq[now][tmp]=;
if(he==) he=;
for(int i=head[now];i;i=e[i].next)
{
int v=e[i].to;
if(d[v][tmp]>d[now][tmp]+e[i].dis)
{
d[v][tmp]=d[now][tmp]+e[i].dis;
if(!inq[v][tmp])
{
q[ta][]=v;q[ta++][]=tmp;
inq[v][tmp]=;
if(ta==) ta=;
}
}
if(d[v][tmp+]>d[now][tmp] && tmp<k)
{
d[v][tmp+]=d[now][tmp];
if(!inq[v][tmp+])
{
inq[v][tmp+]=;
q[ta][]=v;q[ta++][]=tmp+;
if(ta==) ta=;
}
}
}
}
int ans=0x7fffffff;
for(int i=;i<=k;i++) ans=min(ans,d[ed][i]);
printf("%d",ans);
} int main()
{
int x,y,z;
n=read();m=read();k=read();
st=read();ed=read();
while(m--)
{
x=read();y=read();z=read();
add(x,y,z);add(y,x,z);
}
spfa();
return ;
}
bzoj2763: [JLOI2011]飞行路线(分层图spfa)的更多相关文章
- [BZOJ2963][JLOI2011]飞行路线 分层图+spfa
Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并 ...
- BZOJ2763[JLOI2011]飞行路线 [分层图最短路]
2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2523 Solved: 946[Submit][Statu ...
- BZOJ2763: [JLOI2011]飞行路线(分层图 最短路)
题意 题目链接 Sol 分层图+最短路 建\(k+1\)层图,对于边\((u, v, w)\),首先在本层内连边权为\(w\)的无向边,再各向下一层对应的节点连边权为\(0\)的有向边 如果是取最大最 ...
- bzoj2763 [JLOI2011]飞行路线——分层图
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2763 构建分层图. 代码如下: 写法1(空间略大)(时间很慢): #include<i ...
- [bzoj2763][JLOI2011]飞行路线——分层图最短路
水题.不多说什么. #include <bits/stdc++.h> using namespace std; const int maxn = 10010; const int maxk ...
- bzoj2763: [JLOI2011]飞行路线 分层图+dij+heap
分析:d[i][j]代表从起点到点j,用了i次免费机会,那就可以最短路求解 #include <stdio.h> #include <iostream> #include &l ...
- 【bzoj2763】[JLOI2011]飞行路线 分层图最短路
题目描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的 ...
- bzoj2763 [JLOI]飞行路线 分层图最短路
问题描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的 ...
- bzoj 2763: [JLOI2011]飞行路线 -- 分层图最短路
2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MB Description Alice和Bob现在要乘飞机旅行,他们选择了一家相 ...
随机推荐
- TCP:三次握手,URG、ACK、PSH、RST、SYN、FIN 含义
http://blog.csdn.net/wudiyi815/article/details/8505726 TCP:SYN ACK FIN RST PSH URG简析 三次握手Three-way ...
- 爬虫解析库BeautifulSoup的一些笔记
BeautifulSoup类使用 基本元素 说明 Tag 标签,最基本的信息组织单元,分别是<>和</>标明开头和结尾 Name 标签的名字,<p></p ...
- CAD当前选择实体发生变化调用事件(com接口)
主要用到函数说明: _DMxDrawXEvents::SelectModified 当前选择实体发生变化,会调用该事件,详细说明如下: 参数 说明 IDispatch* pAryId 当前被选择的实体 ...
- CAD在网页中打印的图纸里面添加页眉及页脚
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- 如何让 HTML 识别 string 里的 '\n' 并成功换行
只要在结果所在的 div 的 css 设置: white-space: pre-line; 然后页面就能成功识别 '\n' 并整齐的显示结果了.
- json和pickle的序列化
PICKle模块:
- JavaScript day3(数据类型)
数据类型(data type) JavaScript提供七种不同的数据类型(data types),它们是string(字符串), symbol(符号), number(数字), undefined( ...
- 救济金发放(The Dole Queue, UVa 133)
n(n<20)个人站成一圈,逆时针编号为1-n.有两个官员,A从1开始逆时针数,B从n开 始顺时针数.在每一轮中,官员A数k个就停下来,官员B数m个就停下来(注意有可能两个 官员停在同一个人上) ...
- Git ——Tool
Git: 何为Git: Git 是一个可以实时记录文件变化.维护文件的安全的一个仓库! Git仓库是由** Linux 系统之父 Linus Torvalds ** 创建的一个开源 的软件!Githu ...
- 1 Ipython、Jupyter 入门
为什么使用Python进行数据分析: 1 Python大量的库为数据分析和处理提供了完整的工具集 2 比起R和Matlab等其他主要用于数据分析的编程语言,Python更全能 ...