Remmarguts’ Date(poj 2449)
求第k短路的长度,如果没有,输出-1。
/*
k短路模板
注意当s=t时,k++。
*/
#include<iostream>
#include<cstdio>
#include<queue>
#define N 1010
#define M 100010
using namespace std;
int head1[N],head2[N],dis[N],vis[N],n,m,k,cnt;
bool flag;
struct node
{
int v,pre,t;
};node e1[M],e2[M];
struct Node
{
int from,g,f;
bool operator< (Node x) const
{
if(x.f!=f)return x.f<f;
return x.g<g;
}
};
void add(int i,int x,int y,int z)
{
e1[i].v=y;
e1[i].t=z;
e1[i].pre=head1[x];
head1[x]=i;
e2[i].v=x;
e2[i].t=z;
e2[i].pre=head2[y];
head2[y]=i;
}
void spfa(int s,int t)
{
queue<int> q;
for(int i=;i<=n;i++)dis[i]=N*M;
vis[s]=;dis[s]=;
q.push(s);
while(!q.empty())
{
int x=q.front();q.pop();
vis[x]=;
for(int i=head2[x];i;i=e2[i].pre)
if(dis[e2[i].v]>dis[x]+e2[i].t)
{
dis[e2[i].v]=dis[x]+e2[i].t;
if(!vis[e2[i].v])
{
vis[e2[i].v]=;
q.push(e2[i].v);
}
}
}
}
void a_star(int s,int t)
{
if(s==t)k++;
priority_queue<Node> q;
Node u;u.from=s;u.g=;u.f=dis[s];
q.push(u);
while(!q.empty())
{
u=q.top();q.pop();
if(u.from==t)
{
cnt++;
if(cnt==k)
{
printf("%d",u.f);
flag=true;
return;
}
}
for(int i=head1[u.from];i;i=e1[i].pre)
{
Node v;
v.from=e1[i].v;
v.g=u.g+e1[i].t;
v.f=v.g+dis[e1[i].v];
q.push(v);
}
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
add(i,x,y,z);
}
int s,t;
scanf("%d%d%d",&s,&t,&k);
spfa(t,s);
a_star(s,t);
if(!flag)printf("-1");
return ;
}
Remmarguts’ Date(poj 2449)的更多相关文章
- 【POJ】2449 Remmarguts' Date(k短路)
http://poj.org/problem?id=2449 不会.. 百度学习.. 恩. k短路不难理解的. 结合了a_star的思想.每动一次进行一次估价,然后找最小的(此时的最短路)然后累计到k ...
- POJ 2449:Remmarguts' Date(A* + SPFA)
题目链接 题意 给出n个点m条有向边,源点s,汇点t,k.问s到t的第k短路的路径长度是多少,不存在输出-1. 思路 A*算法是启发式搜索,通过一个估价函数 f(p) = g(p) + h(p) ,其 ...
- poj 2449 Remmarguts' Date (k短路模板)
Remmarguts' Date http://poj.org/problem?id=2449 Time Limit: 4000MS Memory Limit: 65536K Total Subm ...
- poj 2449 Remmarguts' Date(第K短路问题 Dijkstra+A*)
http://poj.org/problem?id=2449 Remmarguts' Date Time Limit: 4000MS Memory Limit: 65536K Total Subm ...
- POJ 2449 Remmarguts' Date (SPFA + A星算法) - from lanshui_Yang
题目大意:给你一个有向图,并给你三个数s.t 和 k ,让你求从点 s 到 点 t 的第 k 短的路径.如果第 k 短路不存在,则输出“-1” ,否则,输出第 k 短路的长度. 解题思路:这道题是一道 ...
- POJ 2449 Remmarguts' Date (第k短路径)
Remmarguts' Date Time Limit: 4000MS Memory Limit: 65536K Total Submissions:35025 Accepted: 9467 ...
- POJ——2449Remmarguts' Date(A*+SPFA)
Remmarguts' Date Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 26504 Accepted: 7203 ...
- 01背包问题:Charm Bracelet (POJ 3624)(外加一个常数的优化)
Charm Bracelet POJ 3624 就是一道典型的01背包问题: #include<iostream> #include<stdio.h> #include& ...
- Scout YYF I(POJ 3744)
Scout YYF I Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5565 Accepted: 1553 Descr ...
随机推荐
- LOJ#120. 持久化序列(FHQ Treap)
题面 传送门 题解 可持久化\(Treap\)搞一搞 //minamoto #include<bits/stdc++.h> #define R register #define inlin ...
- 设置VMWare虚拟机使拷贝虚拟机后固定原有的IP地址
VMWare中已经安装并设置好的虚拟机在拷贝给别人后,再次打开该虚拟机时原有自动获取的IP地址将会变化,那么原有根据该IP地址进行的设置均将失效,还需要重新设置,比较麻烦,经过百度查询原来可以将虚拟机 ...
- 2016天池-O2O优惠券使用预测竞赛总结
第一次参加数据预测竞赛,发现还是挺有意思的.本文中的部分内容参考第一名“诗人都藏在水底”的解决方案. 从数据划分.特征提取.模型设计.模型融合/优化,整个业务流程得到了训练.作为新手在数据划分和模型训 ...
- 专题六:UDP编程
引用: 前一个专题简单介绍了TCP编程的一些知识,UDP与TCP地位相当的另一个传输层协议,它也是当下流行的很多主流网络应用(例如QQ.MSN和Skype等一些即时通信软件传输层都是应用UDP协议的) ...
- Javascript DOM 编程艺术(第二版)读书笔记——基本语法
Javascript DOM 编程艺术(第二版),英Jeremy Keith.加Jeffrey Sambells著,杨涛.王建桥等译,人民邮电出版社. 学到这的时候,我发现一个问题:学习过程中,相当一 ...
- 60查找nanopim1plus的HDMI为720p输出的问题
60查找nanopim1plus的HDMI为720p输出的问题 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 21504965 AT qq.com 完成时间:2017/12/5 17:51 版本:V1. ...
- selenium学习第三天,新建一个测试用例(运行失败)。
今天的意外收获,在找SELENIUM实例的时候,发现一个JS实例,功能各类非常全演示及代码都有,谢谢大神的分享:http://www.miniui.com/demo/#src=datagrid/pag ...
- 关于 VS 调用存储过程加载很慢和SQL 执行很快的那些事
执行同样的存储过程,调用同样的参数 在VS 中调用存储过程和传参后,到数据加载需要20秒或更多, 在SQL直接调用则不到一秒,同一个存储过程为什么有这么大的区别呢? 原因:存储过程计划失效的原因 产生 ...
- Reuse a SSL socket
It's possible to reuse a SSL socket after proper cleanup. See SSL Socket free and shutdown on stacko ...
- 梦想CAD控件网页版扩展数据
随着基于CAD的应用软件飞速发展,经常需要保存一些与图形可视性无关的数据,即非图形参数.例如在绘制化验样图中包含品位数据.MxCAD定义一类新的参数——实体扩展数据.扩展数据与实体的可视性无关,而是用 ...