ACM-ICPC 2018 沈阳赛区网络预赛 D. Made In Heaven(约束第K短路)
题意:求11到nn的第kk短的路径长度,如果超过TT输出Whitesnake!Whitesnake!,否则输出yareyaredawayareyaredawa。
好无以为 , 这就是一道模板题, 当是与之不同的是有T的限制,还要注意是在所有满足条件的边中的第k条 , 比赛的时候题意理解问题,导致无法AC
#include<stdio.h>
#include<string.h>
#include<queue>
#include<algorithm>
using namespace std;
const int INF = 0x3f3f3f3f;
const int maxn = ;
const int maxm = ;
int TIME;
struct EDGE{ int v, nxt, w; };
struct NODE{
int pos, Cost, F;
bool operator < (const NODE & rhs) const {//重载的时候注意符号
if(this->F == rhs.F) return this->Cost > rhs.Cost;
return this->F > rhs.F;
};
}; EDGE Edge[maxm];
EDGE REdge[maxm];
int Head[maxn], RHead[maxn];
int cnt, Rcnt;
int N;
void init()
{
memset(Head, -, sizeof(Head));
memset(RHead, -, sizeof(RHead));
cnt = Rcnt = ;
} void AddEdge(int from, int to, int weight)
{
Edge[cnt].w = weight;
Edge[cnt].v = to;
Edge[cnt].nxt = Head[from];
Head[from] = cnt++;
} void AddREdge(int from, int to, int weight)
{
REdge[Rcnt].w = weight;
REdge[Rcnt].v = to;
REdge[Rcnt].nxt = RHead[from];
RHead[from] = Rcnt++;
} int vis[maxn];
int H[maxn];
void SPFA(int st)
{
queue<int> que;
memset(H, INF, sizeof(H));
memset(vis, , sizeof(vis));
H[st] = ;
que.push(st);
while(!que.empty()){
int cur = que.front(); que.pop();
vis[cur] = ;
for(int i=RHead[cur]; i!=-; i=REdge[i].nxt) {
int v = REdge[i].v;
if(H[v] > H[cur] + REdge[i].w) {
H[v] = H[cur] + REdge[i].w;
if(!vis[v]) {
vis[v] = ;
que.push(v);
}
}
}
}
} int A_Star(int s, int t, int k)
{
if(s == t) k++;
if(H[s]==INF) return -;
priority_queue<NODE> que;
NODE cur, into;
cur.pos = s;
cur.Cost = ;
cur.F = H[s];
que.push(cur);
int CNT = ;
while(!que.empty()){
cur = que.top();
que.pop();
if(cur.Cost>TIME)///因为是最优最优的来,不条件的话,下面的也肯定吧满足,
return -;
if(cur.pos == t) CNT++;
if(CNT == k) return cur.Cost;
for(int i=Head[cur.pos]; i!=-; i=Edge[i].nxt){
into.Cost = cur.Cost+Edge[i].w;
into.F = cur.Cost+Edge[i].w+H[Edge[i].v];
into.pos = Edge[i].v;
que.push(into);
}
}return -;
} int main(void)
{
int M, K, S, des;
while(~scanf("%d %d", &N, &M)){
init();
int from, to, weight;
scanf("%d %d %d %d", &S, &des, &K,&TIME);
while(M--){
scanf("%d %d %d",&from, &to, &weight);
AddEdge(from, to, weight);
AddREdge(to, from, weight);//建反向边
} SPFA(des);//求其他点到终点的最短路,作为H值
if(A_Star(S,des,K)!=-)
puts("yareyaredawa");
else
puts("Whitesnake!");
}
return ;
}
ACM-ICPC 2018 沈阳赛区网络预赛 D. Made In Heaven(约束第K短路)的更多相关文章
- 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短路模板)
求第k短路模板 先逆向求每个点到终点的距离,再用dij算法,不会超时(虽然还没搞明白为啥... #include<iostream> #include<cstdio> #inc ...
- 图上两点之间的第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 沈阳赛区网络预赛 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 ...
随机推荐
- BestCoder Round #93 比赛记录
机房又迎来了一次BC.大家都沸腾了... BC开场,大家全都瞬间开始 啪啦啪啦啪啦啪啦 都要赶紧水过第一题. 第一题明显直接贪心就好了,用map去重. 本人荣幸地第一个写完,提交 Wa. (崩溃的内心 ...
- 排成一行的li之间的间隙问题
现象 对于ul下li排成一行的布局(即li的display由list-item设为inline-block): 情况1 如果这些li在书写的时候有换行或者有空格,且ul本身的font-size不为0, ...
- 【转】 Pro Android学习笔记(七十):HTTP服务(4):SOAP/JSON/XML、异常
目录(?)[-] SOAP JSON和XMLPullParser Exception处理 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件,转载须注明出处:http://blog. ...
- JavaScript-Tool:template
ylbtech-JavaScript-Tool: 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返回顶部 作者:ylbtech出处:http:/ ...
- HTTP 协议入门(转载)
作者:阮一峰 (@ruanyf) www.ruanyifeng.com/blog/2016/08/http.html HTTP 协议是互联网的基础协议,也是网页开发的必备知识,最新版本 HTTP/2 ...
- eclipse tomcat 无法加载导入的web项目,There are no resources that can be added or removed from the server. .
应该是项目自己的setting文件夹下的描述信息和.project文件的描述信息,不能适用于这个eclipse和tomcat. 解决方法: 1,找相同类型的工程(tomcat能引用的)2,把新建项目里 ...
- LAMP 1.7Apache用户认证
假如我们要在www.aaa.com/的 abc/目录下放一些文件,只想让自己访问,做一个用户认证.输入正确的用户和密码才能访问 cd /data/www mkdir abc cd abc cp /et ...
- IPC编程之共享内存
一,共享内存介绍 共享内存是三个IPC(Inter-Process Communication)机制中的一个,它允许两个不相关的进程访问同一个逻辑内存. 二.共享内存使用的函数 #include ...
- GIT URI
https://u3shadow@code.google.com/p/myandorid/
- js验证文本框数字
输入框 <input name="title" type="text" oninput="onlyNum(this,'')" titl ...