[BZOJ2963][JLOI2011]飞行路线 分层图+spfa
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
对于50%的数据,2<=n<=600,1<=m<=6000,0<=k<=1;
对于100%的数据,2<=n<=10000,1<=m<=50000,0<=k<=10.
Solution
做法:分层图+$spfa$
大概是叫分层图吧...感觉和$dp$一个样子
就是给$dis$数组多一个属性:用了多少次免费
更新的时候多$for$一遍更新整个$dis$数组就行了
两种转移:
$dis[v][k]=min(dis[v][k],d[u][k]+e[i].v)$
$dis[v][k]=min(dis[v][k],dis[u][k-1])$
$k$表示目前一共用了$k$次免费次数
然后直接跑一遍$spfa$就行了,$k<=10$,$spfa$的常数大了十倍。不过能过就是了
还有就是注意队列用下循环队列,不然空间爆炸
#include <bits/stdc++.h> using namespace std ; #define N 1000010
#define inf 0x3f3f3f3f int n , m , k , s , t ;
int cnt , head[ N ] ;
int q[ N ] , d[ N ][ ] ;
bool vis[ N ] ;
struct node {
int to , nxt , v ;
}e[ N ] ; void ins( int u , int v , int w ) {
e[ ++ cnt ].to = v ;
e[ cnt ].nxt = head[ u ] ;
e[ cnt ].v = w ;
head[ u ] = cnt ;
} void spfa() {
memset( d , 0x3f , sizeof( d ) ) ;
for( int i = ; i <= k ; i ++ ) d[ s ][ i ] = ;
q[ ] = s ;vis[ s ] = ;
int l = , r = ;
while( l != r ) {
int u = q[ l ++ ] ;
vis[ u ] = ;
if( l == ) l = ;
for( int i = head[ u ] ; i ; i = e[ i ].nxt ) {
int v = e[ i ].to ,now = ;
for( int j = ; j <= k ; j ++ ) {
if( !j ) now = d[ u ][ j ] + e[ i ].v ;
else now = min( d[ u ][ j - ] , d[ u ][ j ] + e[ i ].v ) ;
if( d[ v ][ j ] > now ) {
d[ v ][ j ] = now ;
if( !vis[ v ] ) vis[ v ] = , q[ r ++ ] = v ;
if( r == ) r = ;
}
}
}
}
} int main() {
scanf( "%d%d%d%d%d" , &n , &m , &k , &s , &t ) ;
s ++ ; t ++ ;
for( int i = ; i <= m ; i ++ ) {
int u , v , w ;
scanf( "%d%d%d" , &u , &v , &w ) ;
u ++ , v ++ ;
ins( u , v , w ) ;
ins( v , u , w ) ;
}
spfa() ;
int ans = inf ;
for( int i = ; i <= k ; i ++ ) {
ans = min( ans , d[ t ][ i ] ) ;
}
printf( "%d\n" , ans ) ;
return ;
}
[BZOJ2963][JLOI2011]飞行路线 分层图+spfa的更多相关文章
- bzoj2763: [JLOI2011]飞行路线(分层图spfa)
2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3234 Solved: 1235[Submit][Stat ...
- 【bzoj2763】[JLOI2011]飞行路线 分层图最短路
题目描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的 ...
- bzoj 2763: [JLOI2011]飞行路线 -- 分层图最短路
2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MB Description Alice和Bob现在要乘飞机旅行,他们选择了一家相 ...
- bzoj 2763 [JLOI2011]飞行路线——分层图
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2763 分层图两种方法的练习. 1.把图分成k+1层,本层去上面一层的边免费.但空间时间都不算 ...
- [JLOI2011]飞行路线 分层图最短路
题目描述: Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在nn个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一 ...
- P4568 [JLOI2011]飞行路线 分层图
题目描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在nn个城市设有业务,设这些城市分别标记为00到n-1n−1,一共有mm种航线,每种航线连接两个城市,并且 ...
- 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 ...
随机推荐
- mysql 数据类型 目录
mysql 数据类型 mysql 整数类型 数值类型 tinyint mysql int 整数类型 解释显示宽度 和 存储宽度 mysql float 浮点型 mysql 日期类型 mysql 字符串 ...
- dedecms网站迁移时记得将安装目录放空 附迁移的正确方法
这段时间在赶一些新项目,我们建站一般都在本地服务器搭建起来,测试得差不多了才传到网上,这样对蜘蛛也相对友好一些,要不然改来改去变化太大给搜索引擎的第一印象很不好.但是由于本地环境和服务器环境还是有一些 ...
- FineReport实现java报表权限使用的效果图
Java报表-多级权限配置说明 Java报表-联合填报 Java报表-模板内容权限控制 Java报表-权限细粒度控制
- BFS广搜题目(转载)
BFS广搜题目有时间一个个做下来 2009-12-29 15:09 1574人阅读 评论(1) 收藏 举报 图形graphc优化存储游戏 有时间要去做做这些题目,所以从他人空间copy过来了,谢谢那位 ...
- 机器学习理论基础学习12---MCMC
作为一种随机采样方法,马尔科夫链蒙特卡罗(Markov Chain Monte Carlo,以下简称MCMC)在机器学习,深度学习以及自然语言处理等领域都有广泛的应用,是很多复杂算法求解的基础.比如分 ...
- GET 'https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.1.2/gradle-3
Could not GET 'https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.1.2/gradle-3 ...
- html08
1.JQuery 是一个js框架一堆的 js文件 -形成 > 包 - 形成> 工具 - 形成> ->库 -> 框架 是一个轻量级的库 封装了js原生里js css dom ...
- html02
复习:HTML标记 p h1~h6 font table>tr>td ul>li ol>li div span form:input>typy :password rad ...
- 为什么size_t重要?
参见 http://en.cppreference.com/w/cpp/types/size_t size_t其实与uintptr_t一个道理.就是一个东西.指针其实就是寻址,与地址总线位数一致,编译 ...
- liferay6.1.2的API
http://docs.liferay.com/portal/6.1/javadocs/overview-summary.html