ACM-ICPC 2018 沈阳赛区网络预赛 D. Made In Heaven(第k短路模板)
求第k短路模板
先逆向求每个点到终点的距离,再用dij算法,不会超时(虽然还没搞明白为啥。。。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<queue>
#include<vector>
#include<string.h>
#include<cstring>
#include<algorithm>
#include<set>
#include<map>
#include<fstream>
#include<cstdlib>
#include<ctime>
#include<list>
#include<climits>
#include<bitset>
#include<random>
#include <ctime>
#include <cassert>
#include <complex>
#include <cstring>
#include <chrono>
using namespace std;
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fopen freopen("input.in", "r", stdin);freopen("output.in", "w", stdout);
#define left asfdasdasdfasdfsdfasfsdfasfdas1
#define tan asfdasdasdfasdfasfdfasfsdfasfdas
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
typedef long long ll;
typedef unsigned int un;
const int desll[][]={{,},{,-},{,},{-,}};
const int mod=1e9+;
const int maxn=1e3+;
const int maxm=1e5+;
const double eps=1e-;
int n,k,m;
int ar[maxn];
int head[maxn],sz,rehead[maxn];
bool vis[maxn];
int dis[maxn];
struct node
{
int b,nex,c;
}no[maxn*],reno[maxn*];
void add(int a,int b,int c)
{
no[sz].b=b;
no[sz].c=c;
no[sz].nex=head[a];
head[a]=sz;
reno[sz].b=a;
reno[sz].c=c;
reno[sz].nex=rehead[b];
rehead[b]=sz++;
}
struct state{
int all,pre,v;
state(int a,int b,int c){
all=a;pre=b;v=c;
}
state(){ }
bool operator<(const state& s)const{
return all>s.all;
}
};
priority_queue<state> qu;
void init(int s,int e)
{
memset(vis,,sizeof(vis));
memset(dis,-,sizeof(dis));
queue<int> qu;
qu.push(e);vis[e]=;
dis[e]=;
while(qu.size()){
int x=qu.front();
qu.pop();
vis[x]=;
for(int i=rehead[x];i!=-;i=reno[i].nex){
int v=reno[i].b;
if(dis[v]==- || dis[v]>dis[x]+reno[i].c){
dis[v]=dis[x]+reno[i].c;
if(vis[v]==){
vis[v]=;
qu.push(v);
}
}
}
}
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF){
int s,e,k,t;
scanf("%d%d%d%d",&s,&e,&k,&t);
memset(head,-,sizeof(head));
memset(rehead,-,sizeof(rehead));sz=;
for(int i=;i<m;i++){
int a,b,c;scanf("%d%d%d",&a,&b,&c);
add(a,b,c);
}
int ans=;
init(s,e);
//for(int i=1;i<=n;i++)cout<<dis[i]<<" ";cout<<endl;
if(dis[s]==-)ans=-;
else{
while(qu.size())qu.pop();
qu.push(state(dis[s],,s));
state mid;
int ins=;
while(qu.size()){
mid = qu.top();
qu.pop();
if(mid.v==e){
ins++;
if(ins==k){
ans=mid.all;
break;
}
}
for(int i=head[mid.v];i!=-;i=no[i].nex){
int v=no[i].b;
qu.push(state(mid.pre+no[i].c+dis[v],mid.pre+no[i].c,v));
}
}
}
if(ans!=- && ans<=t)printf("yareyaredawa\n");
else printf("Whitesnake!\n");
}
return ;
}
ACM-ICPC 2018 沈阳赛区网络预赛 D. Made In Heaven(第k短路模板)的更多相关文章
- 图上两点之间的第k最短路径的长度 ACM-ICPC 2018 沈阳赛区网络预赛 D. Made In Heaven
131072K One day in the jail, F·F invites Jolyne Kujo (JOJO in brief) to play tennis with her. Howe ...
- ACM-ICPC 2018 沈阳赛区网络预赛 D Made In Heaven(第k短路,A*算法)
https://nanti.jisuanke.com/t/31445 题意 能否在t时间内把第k短路走完. 分析 A*算法板子. #include <iostream> #include ...
- ACM-ICPC 2018 沈阳赛区网络预赛 D. Made In Heaven(约束第K短路)
题意:求11到nn的第kk短的路径长度,如果超过TT输出Whitesnake!Whitesnake!,否则输出yareyaredawayareyaredawa. 好无以为 , 这就是一道模板题, 当是 ...
- ACM-ICPC 2018 沈阳赛区网络预赛 K Supreme Number(规律)
https://nanti.jisuanke.com/t/31452 题意 给出一个n (2 ≤ N ≤ 10100 ),找到最接近且小于n的一个数,这个数需要满足每位上的数字构成的集合的每个非空子集 ...
- ACM-ICPC 2018 沈阳赛区网络预赛-K:Supreme Number
Supreme Number A prime number (or a prime) is a natural number greater than 11 that cannot be formed ...
- ACM-ICPC 2018 沈阳赛区网络预赛-D:Made In Heaven(K短路+A*模板)
Made In Heaven One day in the jail, F·F invites Jolyne Kujo (JOJO in brief) to play tennis with her. ...
- ACM-ICPC 2018 沈阳赛区网络预赛 J树分块
J. Ka Chang Given a rooted tree ( the root is node 11 ) of NN nodes. Initially, each node has zero p ...
- ACM-ICPC 2018 沈阳赛区网络预赛 K. Supreme Number
A prime number (or a prime) is a natural number greater than 11 that cannot be formed by multiplying ...
- ACM-ICPC 2018 沈阳赛区网络预赛 F. Fantastic Graph
"Oh, There is a bipartite graph.""Make it Fantastic." X wants to check whether a ...
随机推荐
- ACM International Collegiate Programming Contest, Egyptian Collegiate Programming Contest (ECPC 2015)
A.Arcade Game(康拓展开) 题意: 给出一个每个数位都不同的数n,进行一场游戏.每次游戏将n个数的每个数位重组.如果重组后的数比原来的数大则继续游戏,否则算输.如果重组后的数是最大的数则算 ...
- BZOJ1076 [SCOI2008]奖励关 【状压dp + 数学期望】
1076: [SCOI2008]奖励关 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 3074 Solved: 1599 [Submit][Sta ...
- JSP AJAX之Form序列化登录体验
package web; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletExc ...
- 12.25模拟赛T1
可以区间dp,但是复杂度太高. 所以应该是贪心,怎么贪心呢? 这种题目,最好还是手玩找一些规律. 可以发现,由于保证可以m次填完,所以颜色之间没有相互包含关系. 比较像分治的模型. 所以考虑拿到一个区 ...
- 自己模拟实现一下Google的赛马Doodle
今天的Google Doodle是个动态的,是一个骑马的动态Doodle,是谷歌纪念英国实验摄影师埃德沃德·迈布里奇182周年诞辰,埃德沃德·迈布里奇是运动摄影的开创者,所以谷歌涂鸦以一个运动的摄影作 ...
- Win10的WSL很好用呀
WSL全名是Windows Subsystem for Linux,是win10版本号16xx之后推出的开发者功能,提供了如原生linux版的体验. 最近最新的win10春季版1803出来了,安装了看 ...
- 获取系统内RAR安装路径
RegistryKey the_Reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVers ...
- tomcat部署多个项目,通过域名解析访问不同的网站
转摘自:http://qinyinbolan.blog.51cto.com/4359507/1211064 说明: 1.首先需要有多个域名,同时指向一个IP地址. 例如:域名:www.bbb.com, ...
- Spring学习--切面优先级及重用切点表达式
指定切面的优先级: 在同一个链接点上应用不止一个切面时 , 除非明确指定 , 否则它们的优先级是不确定的. 切面的优先级可以通过实现 Ordered 接口或利用 @Order 注解指定. 实现 Ord ...
- ios上传图片显示方向错误问题
IOS 上传图片方向显示错误问题 问题描述 在使用苹果手机上传图片的时候,发现传完的图片显示出来方向是错误的,竖着的图片会变成横着显示(少部分安卓手机也存在这个问题) 产生原因 ios 相机加入了方向 ...