【BZOJ2763/洛谷p4563】【分层图最短路】飞行路线
2763: [JLOI2011]飞行路线
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 4630 Solved: 1797
[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.
Source
HOME Back
洛谷上面的数据卡常毒瘤啊!!巴中随手a,洛谷交了快10次...加了一些玄学优化...
spfa里面如果当前状态的cost已经大于等于到终点时的相同状态的cost,就不把这个状态加入队列了。然后就是RG大法好!!
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#define RG register
using namespace std; int n, k, m, s, t;
int dp[][]; struct node {
int u, k;
node ( int u, int k ) :
u ( u ), k ( k ) { }
}; int stot, nex[], h[], tov[], w[];
void add ( int u, int v, int ss ) {
tov[++stot] = v;
w[stot] = ss;
nex[stot] = h[u];
h[u] = stot;
} int vis[][];
queue < node > q; void spfa ( ) {
memset ( dp, 0x3f3f3f3f, sizeof ( dp ) );
vis[s][] = ;
dp[s][] = ;
q.push ( node ( s, ) );
while ( !q.empty ( ) ) {
node x = q.front ( ); q.pop ( ); vis[x.u][x.k] = ;
for ( RG int i = h[x.u]; i; i = nex[i] ) {
int v = tov[i];
if ( dp[v][x.k] > dp[x.u][x.k] + w[i] ) {
dp[v][x.k] = dp[x.u][x.k] + w[i];
if ( !vis[v][x.k] && dp[v][x.k] <= dp[t][x.k] ) {
vis[v][x.k] = ;
q.push ( node ( v, x.k ) );
}
}
if ( x.k < k && dp[v][x.k+] > dp[x.u][x.k] ) {
dp[v][x.k+] = dp[x.u][x.k];
if ( !vis[v][x.k+] && dp[v][x.k+] <= dp[t][x.k+] ) {
vis[v][x.k+] = ;
q.push ( node ( v, x.k + ) );
}
}
}
}
} int main ( ) {
scanf ( "%d%d%d", &n, &m, &k );
scanf ( "%d%d", &s, &t );
for ( RG int i = ; i <= m; i ++ ) {
int u, v, s;
scanf ( "%d%d%d", &u, &v, &s );
add ( u, v, s );
add ( v, u, s );
}
spfa ( );
printf ( "%d", dp[t][k] );
return ;
}
【BZOJ2763/洛谷p4563】【分层图最短路】飞行路线的更多相关文章
- 分层图最短路【bzoj2763】: [JLOI2011]飞行路线
bzoj2763: [JLOI2011]飞行路线 Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0 ...
- 【bzoj2763】[JLOI2011]飞行路线 (分层图最短路)(优先队列dij)
[bzoj2763][JLOI2011]飞行路线 2014年3月25日1,7260 Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城 ...
- BZOJ2763: [JLOI2011]飞行路线(分层图 最短路)
题意 题目链接 Sol 分层图+最短路 建\(k+1\)层图,对于边\((u, v, w)\),首先在本层内连边权为\(w\)的无向边,再各向下一层对应的节点连边权为\(0\)的有向边 如果是取最大最 ...
- bzoj2763 [JLOI]飞行路线 分层图最短路
问题描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的 ...
- 2019牛客多校第四场J free——分层图&&最短路
题意 一张无向图,每条边有权值,可以选择不超过 $k$ 条路使其权值变成0,求 $S$ 到 $T$ 的最短路.(同洛谷 P4568) 分析 首先,分层图最短路可以有效解决这种带有 「阶段性」的最短路, ...
- HDU 5669 线段树优化建图+分层图最短路
用线段树维护建图,即把用线段树把每个区间都标号了,Tree1中子节点有到达父节点的单向边,Tree2中父节点有到达子节点的单向边. 每次将源插入Tree1,汇插入Tree2,中间用临时节点相连.那么T ...
- poj3635Full Tank?[分层图最短路]
Full Tank? Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7248 Accepted: 2338 Descri ...
- BZOJ 2763 分层图最短路
突然发现我不会分层图最短路,写一发. 就是同层中用双向边相连,用单向边连下一层 #include <cstdio> #include <algorithm> #include ...
- 【网络流24题】 No.15 汽车加油行驶问题 (分层图最短路i)
[题意] 问题描述:给定一个 N*N 的方形网格,设其左上角为起点◎, 坐标为( 1, 1), X 轴向右为正, Y轴向下为正, 每个方格边长为 1, 如图所示. 一辆汽车从起点◎出发驶向右下角终点▲ ...
随机推荐
- NYOJ 231 Apple Tree (树状数组)
题目链接 描述 There is an apple tree outside of kaka's house. Every autumn, a lot of apples will grow in t ...
- ecshop代码修改后提交,无法立即生效
今天帮一朋友部署一网站.成品的ecshop模版站.在搭建好xammp集成环境,导入数据库,修改配置文件后,报了一大堆错. 其中第一个是关于废弃preg_replace中/e这种用法的,因为存在漏洞,一 ...
- http介绍
1.http特点: 1>简单快捷: 2>灵活: 3>支持客户端.服务器结构: 4>无连接----无连接的含义是限制每次连接只处理一个请求: 5>无状态----无状态是指协 ...
- php隐藏WEBSHELL技巧
把shell添加到网站logo图片里: cat logo.png shell.php > logo.png 在网站任意一个php文件里添加下面的最简单方法: fputs(fopen('/home ...
- redis基础之redis-cluster(集群)(七)
前言 redis的主流高可用集群模式为redis-cluster.从redis3.0+版本后开始支持,自带集群管理工具redis-trib.rb. 安装redis 参考:https://www.cnb ...
- 移动端测试===adb shell top命令解释
adb shell top top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序. top 用法 >a ...
- photoshop 安装问题
问题:“安装程序检测到计算机重新启动操作可能处于挂起状态.建议您退出安装程序,重新启动并重试.” 解决: 1.运行 regedit 打开注册表编辑器. 2.依次展开HKEY_LOCAL_MACHINE ...
- [转载]Windows服务编写原理及探讨(2)
(二)对服务的深入讨论之上 上一章其实只是概括性的介绍,下面开始才是真正的细节所在.在进入点函数里面要完成ServiceMain的初始化,准确点说是初始化一个 SERVICE_TABLE_ENTRY结 ...
- C中常用格式格式码
一.常用printf格式码 二.常用scanf格式码
- Linux 不常用命令总结
1. vim编辑模式下,搜索,/user,跳转下一个,小写的n 2.