【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, 如图所示. 一辆汽车从起点◎出发驶向右下角终点▲ ...
随机推荐
- 3、CSS基本介绍
1.1 CSS基本介绍一.web 标准所谓的web标准指的就是一系列规范网页书写的要求,它是由W3C组织制定,在它里面要求网页的结构.样式.行为三者相分离.二.名词解释1.结构:就是通过HTML标签搭 ...
- isolation forest进行异常点检测
一.简介 孤立森林(Isolation Forest)是另外一种高效的异常检测算法,它和随机森林类似,但每次选择划分属性和划分点(值)时都是随机的,而不是根据信息增益或者基尼指数来选择.在建树过程中, ...
- AUC画图与计算
利用sklearn画AUC曲线 from sklearn.metrics import roc_curve labels=[1,1,0,0,1] preds=[0.8,0.7,0.3,0.6,0.5] ...
- Coursera在线学习---第一节.梯度下降法与正规方程法求解模型参数比较
一.梯度下降法 优点:即使特征变量的维度n很大,该方法依然很有效 缺点:1)需要选择学习速率α 2)需要多次迭代 二.正规方程法(Normal Equation) 该方法可以一次性求解参数Θ 优点:1 ...
- linux下C语言实现的哈希链表【转】
转自:http://blog.chinaunix.net/uid-28458801-id-4276934.html 操作系统:ubuntu10.04 前言: 在稍微大点的项目中,基本都会遇到算 ...
- julia 1.0如何使用pkg
输入]进入pkg模式 add 加包名即可安装,如 add Cxx
- xcode没有ios7的模拟器
xcode7 目前只支持 ios8盒和iOS9的模拟器如果是Yosemite系统,下载xcode7和xcode6.4,两个版本可以共存,然后再下载iOS7默契你如果是EI Caption系统,网上说E ...
- 9. Swarm mode
- scala学习6--collection
list的下标访问 var t = List(1,2,3,5,5) println(t(2)) map函数 println(t.map(a=> {print("***"+a ...
- CentOS/RHEL Linux安装EPEL第三方软件源
https://www.vpser.net/manage/centos-rhel-linux-third-party-source-epel.html