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 ...
随机推荐
- 190. Reverse Bits -- 按位反转
Reverse bits of a given 32 bits unsigned integer. For example, given input 43261596 (represented in ...
- hadoop2.0 和1.0的区别
1. Hadoop 1.0中的资源管理方案Hadoop 1.0指的是版本为Apache Hadoop 0.20.x.1.x或者CDH3系列的Hadoop,内核主要由HDFS和MapReduce两个系统 ...
- java arrayCopy
int[] dest = new int[0]; int[] value = {1,2}; if(value != null && value.length>0) { int[] ...
- Android WebView的使用
WebView是View的一个子类,使用它可以在App中嵌入H5页面,可以跟js互相调用. webview有两个方法:setWebChromeClient和setWebClient setWebCli ...
- Hyper-V和Virtual PC的不同
微软在2003年收购了推出了Virtual PC软件的Connectix公司,并在其后推出了Virtual Server服务器虚拟化软件 Hyper-V跟微软自家的Virtual PC.Virtual ...
- oracle查锁表SQL
SELECT l.session_id sid, s.serial#, l.locked_mode, l.oracle_username, s.user#, l.os_user_name,s.mach ...
- Windows安装配置php+memcached的方法
Windows下Memcached的安装配置方法 1.将第一个包解压放某个盘下面,比如在c:\memcached. 2.在终端(也即cmd命令界面)下输入 'c:\memcached\memcache ...
- 最新电Call记录统计-full hash join用法
declare @time datetime set @time='2016-07-01' --最新的电Call记录统计查询--SELECT t.zuoxi1,t.PhoneCount,t.Phone ...
- POJ 2965 The Pilots Brothers' refrigerator 暴力 难度:1
The Pilots Brothers' refrigerator Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16868 ...
- 二模 (3) day2
第一题: 题目大意:(难以概括,就不贴了把.) 解题过程: 1.担心被精度问题恶心,就把平均数的地方乘了N,这样只有最后计算的时候才会是小数.. 2.数组保存的时候蛋疼的 没改成double.结果全部 ...