POJ2449 (k短路)
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
using namespace std; #define maxn 2008
#define maxm 2000008
#define INF 2000000000 int lt[maxn],LT[maxn],sum=,SUM=;
int h[maxn];
int s,t,k,n,m;
bool pd[maxn]; struct line{
int u,v,w,nt;
}eg[maxm],EG[maxm]; inline void add(int u,int v,int w){
eg[++sum].u=u; eg[sum].v=v; eg[sum].w=w; eg[sum].nt=lt[u]; lt[u]=sum;
}
inline void ADD(int u,int v,int w){
EG[++SUM].u=u; EG[SUM].v=v; EG[SUM].w=w; EG[SUM].nt=LT[u]; LT[u]=SUM;
}
inline void read(int &x){
char ch;
for (ch=getchar();ch<''||ch>'';ch=getchar()); x=ch-;
for (ch=getchar();ch>=''&&ch<='';ch=getchar()) x=x*+ch-;
} inline void spfa(){
queue<int> Q;
for (int i=;i<=n;i++) h[i]=INF;
memset(pd,,sizeof(pd));
h[t]=; pd[t]=; Q.push(t);
while (!Q.empty()){
int u=Q.front(); Q.pop();
for (int i=LT[u];i;i=EG[i].nt){
int v=EG[i].v;
if (h[u]+EG[i].w<h[v]){
h[v]=h[u]+EG[i].w;
if (!pd[v]){
pd[v]=;
Q.push(v);
}
}
}
pd[u]=;
}
} class node{
public:
int f,g,u;
bool operator<(const node& t) const{
return f>t.f;
}
node(int a,int b,int c):f(a),g(b),u(c){}
node(){}
}; int iQ[maxn];
inline int A_star(){
priority_queue<node> Q;
memset(iQ,,sizeof(iQ));
iQ[s]=; Q.push(node(h[s],,s));
while (!Q.empty()){
node cur=Q.top();
//printf("%d %d %d %d\n",cur.f,cur.g,cur.u,iQ[t]);
Q.pop();
iQ[cur.u]++;
if (iQ[t]==k) return cur.f;
if (iQ[cur.u]>k) continue; for (int i=lt[cur.u];i;i=eg[i].nt){
int v=eg[i].v;
Q.push(node(h[v]+cur.g+eg[i].w,cur.g+eg[i].w,v));
}
}
return -;
} inline int main(){
//freopen("1.in","r",stdin);
read(n); read(m);
for (int i=;i<=m;i++) {
int u,v,w;
read(u); read(v); read(w);
add(u,v,w);
ADD(v,u,w);
}
read(s); read(t); read(k);
if (s==t) k++;
spfa();
//for (int i=1;i<=n;i++) printf("%d ",h[i]);
printf("%d\n",A_star());
return ;
}
POJ2449 (k短路)的更多相关文章
- POJ2449:K短路
Remmarguts' Date Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 26355 Accepted: 7170 ...
- poj2449(k短路&A_star模板)
题目链接:http://poj.org/problem?id=2449 题意:给出一个有向图,求s到t的第k短路: 思路:k短路模板题,可以用A_star模板过: 单源点最短路径+高级搜索A*;A*算 ...
- POJ2449 K短路模板
#include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> ...
- A_star poj2449 k短路
赛后填坑系列QAQ 贴代码呀 #include<iostream> #include<algorithm> #include<cstdio> #include< ...
- POJ2449 Remmarguts' Date 第K短路
POJ2449 比较裸的K短路问题 K短路听起来高大上 实际思路并不复杂 首先对终点t到其他所有点求最短路 即为dist[] 然后由起点s 根据当前走过的距离+dist[]进行A*搜索 第k次到达t即 ...
- A*模板(求K短路)(POJ2449)
A*是bfs的优化,IDA*是dfs的优化 A*算法: 为启发式算法中很重要的一种,被广泛应用在最优路径求解和一些策略设计的问题中.而A*算法最为核心的部分,就在于它的一个估值函数的设计上: f(n) ...
- k短路模板 POJ2449
采用A*算法的k短路模板 #include <iostream> #include <cstdio> #include <cstring> #include < ...
- poj2449 第k短路
题目链接 学习博客:https://blog.csdn.net/Z_Mendez/article/details/47057461 k短路没有我想象的那么难,还是很容易理解的 求s点到t点的第k短路径 ...
- 第K短路模板【POJ2449 / 洛谷2483 / BZOJ1975 / HDU6181】
1.到底如何求k短路的? 我们考虑,要求k短路,要先求出最短路/次短路/第三短路……/第(k-1)短路,然后访问到第k短路. 接下来的方法就是如此操作的. 2.f(x)的意义? 我们得到的f(x)更小 ...
- [poj2449]Remmarguts' Date(K短路模板题,A*算法)
解题关键:k短路模板题,A*算法解决. #include<cstdio> #include<cstring> #include<algorithm> #includ ...
随机推荐
- Java 字典排序
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import org.ju ...
- python中函数使用
1.关于函数的调用,简单小例子: >>> def fun(): print(test) >>> test='ni hao ma ?'>>> fu ...
- 修改Linux系统时区
修改配置文件来修改时区1.修改/etc/sysconfig/clock ZONE=Asia/Shanghai 2.rm /etc/localtime3.链接到上海时区文件 ln -sf ...
- poj1651
Multiplication Puzzle Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7252 Accepted: ...
- lucene索引文件格式
转自:http://blog.csdn.net/whuqin 本文介绍下lucene生成的索引有哪些文件组成,每个文件包含了什么信息.基于Lucene 4.10.0. 数据结构 索引(index)包含 ...
- httpClient 4.x post get方法
public static String doPost(String url, String encoding, String contentType, String sendData) throws ...
- C#泛型接口
为泛型集合类或表示集合中项的泛型类定义接口通常很有用.对于泛型类,使用泛型接口十分可取,例如使用 IComparable<T> 而不使用 IComparable,这样可以避免值类型的装箱和 ...
- Sharepoint2010突然之间不能打开页面,报503错误The service is unavailable
原因:安装Sahrepoint时的账号出现故障,可能是密码过期等等. 解决方案: 新建windows用户ada,密码设置为永不过期,隶属于:administrators/IIS-WPG/WSS-WPG ...
- P264练习题1.2题
package 集合; import java.util.*; public class fourteen { public static void main(String[] args) { //1 ...
- ASP.NET MVC学习之路由篇(1)
1.基本路由 RouteConfig.cs: 1 public class RouteConfig 2 { 3 public static void RegisterRoutes(RouteColle ...