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 ...
随机推荐
- POJ2406Power Strings (最小循环节)(KMP||后缀数组)
Given two strings a and b we define a*b to be their concatenation. For example, if a = "abc&quo ...
- bzoj 3165: [Heoi2013]Segment 线段树
题目: Description 要求在平面直角坐标系下维护两个操作: 在平面上加入一条线段.记第i条被插入的线段的标号为i. 给定一个数k,询问与直线 x = k相交的线段中,交点最靠上的线段的编号. ...
- 【LeetCode】048. Rotate Image
题目: You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwis ...
- 洛谷【P1873】砍树
我对二分的理解:https://www.cnblogs.com/AKMer/p/9737477.html 题目传送门:https://www.luogu.org/problemnew/show/P18 ...
- QT4.8.5+qt-vs-addin-1.1.11+VS2010安装配置和QT工程的新建和加载
1.下载windows下的QT库 QT4.8.5 for vs2010: http://download.qt-project.org/official_releases/qt/4.8/4.8.5/q ...
- 问题4:对dict、list、tuple中的元素排序
一)对字典中元素排序 方法一:利用sorted的key参数进行排序 from random import randint date = {k:randint(0, 20) for k in ran ...
- JSP介绍(3)---JSP表单处理
GET方法: GET方法将请求的编码信息添加在网址后面,网址与编码信息通过"?"号分隔.如下所示: http://www.runoob.com/hello?key1=value1& ...
- TS学习之解构与展开
一.解构 1.解构数组 let input = [1, 2]; let [first, second] = input; console.log(first); // outputs 1 consol ...
- Android集成友盟facebook分享
在项目中需要将图片和视频分享到社交平台,所以集成了友盟分享.在集成facebook分享的时候走了不少弯路,现在将过程记录下来. 1.先将友盟facebook的jar包复制到项目的libs文件夹下. 2 ...
- wdcp安全设置,让你的后台,只有你自己能访问
wdcp安全设置,让你的后台,只有你自己能访问 wdcp的后台,默认端口,是8080,可以修改为其它端口wdcp的后台,可以限制IP地址的访问,也可以限制域名的访问做了这些限制与设置后,已相对安全了, ...