第k*短路模板(单项边)
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
#define Max 100005
#define inf 1<<28
using namespace std;
int S,T,K,n,m;
int head[Max],rehead[Max];
int num,renum;
int dis[Max];
bool visit[Max];
int ans[Max];
int qe[Max*10];
struct kdq{int v,len,next;
} edge[Max],reedge[Max];struct a_star {               //A*搜索时的优先级队列;int v;int len;bool operator<(const a_star &a)const{    //f(i)=d[i]+g[i]return len+dis[v]>a.len+dis[a.v];}
};
void insert(int u,int v,int len){//正图和逆图edge[num].v=v;edge[num].len=len;edge[num].next=head[u];head[u]=num;num++;reedge[renum].v=u;reedge[renum].len=len;reedge[renum].next=rehead[v];rehead[v]=renum;renum++;
}void init(){memset(ans,0,sizeof(ans));for(int i=0; i<=n; i++)head[i]=-1,rehead[i]=-1;num=1,renum=1;
}
void spfa(){//从T开始求出T到所有点的 dis[]int i,j;for(i=1; i<=n; i++)dis[i]=inf;dis[T]=0;visit[T]=1;int num=0,cnt=0;qe[num++]=T;while(num>cnt){int temp=qe[cnt++];visit[temp]=0;for(i=rehead[temp]; i!=-1 ; i=reedge[i].next){int tt=reedge[i].v;int ttt=reedge[i].len;if(dis[tt]>dis[temp]+ttt){dis[tt]=dis[temp]+ttt;if(!visit[tt]){qe[num++]=tt;visit[tt]=1;}}}}
}
int A_star(){if(S==T)K++;if(dis[S]==inf)return -1;a_star n1;n1.v=S;n1.len=0;priority_queue <a_star> q;q.push(n1);while(!q.empty()){a_star temp=q.top();q.pop();ans[temp.v]++;if(ans[T]==K)//当第K次取到T的时候,输出路程return temp.len;if(ans[temp.v]>K)continue;for(int i=head[temp.v]; i!=-1; i=edge[i].next){a_star n2;n2.v=edge[i].v;n2.len=edge[i].len+temp.len;q.push(n2);}}return -1;
}
int main(){int i,j,k,l;int a,b,s;scanf("%d%d",&n,&m);init();while(m--){scanf("%d%d%d",&a,&b,&s);insert(a,b,s);}scanf("%d%d%d",&S,&T,&K);spfa();printf("%d\n",A_star());return 0;
}

转载于:https://www.cnblogs.com/13224ACMer/p/4857567.html

poj 2499第K短路模板相关推荐

  1. A*算法+最短路实现K短路+模板题

    <font color=black size=4>K短路问题还是很普遍的,了解一下K短路很有必要,顺便学会A*的简单应用更好. A*算法,是一种启发式搜索算法,我们可以自己设定一个估价函数 ...

  2. POJ 2449 Remmarguts' Date(k短路模板)

    link:https://vjudge.net/problem/POJ-2449 前面输入与大多最短路题相同 最后一行输入s,t,k 求从s到t的第K短路 wiki link: https://en. ...

  3. A*算法的认识与求第K短路模板

    现在来了解A*算法是什么 现在来解决A*求K短路问题 在一个有权图中,从起点到终点最短的路径成为最短路,第2短的路成为次短路,第3短的路成为第3短路,依此类推,第k短的路成为第k短路.那么,第k短路怎 ...

  4. poj2449 K短路模板题

    昨晚看WC论文发现自己连K短路的经典A*算法还不会,补了一波,模板题输出-1后没return继续跑wa了一早上...... 算法流程: ①在反向图中求出t到每个点的最短路 ②从原点bfs,估价f=d+ ...

  5. 第K短路模板【POJ2449 / 洛谷2483 / BZOJ1975 / HDU6181】

    1.到底如何求k短路的? 我们考虑,要求k短路,要先求出最短路/次短路/第三短路--/第(k-1)短路,然后访问到第k短路. 接下来的方法就是如此操作的. 2.f(x)的意义? 我们得到的f(x)更小 ...

  6. BZOJ1975 [Sdoi2010]魔法猪学院 k短路

    欢迎访问~原文出处--博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1975 题意概括 给出一个无向图,让你走不同的路径,从1到n,路径长度之和不超过E,求最大路径条数. ...

  7. POJ - 2449 Remmarguts' Date(第k短路:spfa+A*)

    题目链接:点击查看 题目大意:给出一个有向图,求第k短路 题目分析:偷学了一波A*,本来以为是多难的算法,其实就是bfs+优先队列的升级版,之前看的那些博客写的都太深奥了,以至于看了一半啥都没看懂然后 ...

  8. 【学习笔记】左偏树的可持久化(【模板】k短路 / [SDOI2010]魔法猪学院)

    文章目录 description solution code [模板]k短路 / [SDOI2010]魔法猪学院 description iPig 在假期来到了传说中的魔法猪学院,开始为期两个月的魔法 ...

  9. ACM-ICPC 2018 沈阳赛区网络预赛 D. Made In Heaven (K短路算法模板)

    题意 : 求第k短路的权值是否超过T(权值) 解法: 网上随便找的一个求K短路的算法模板套弄一下即可 (模板要好,不然邻接表存图会TLE , 网上换了两个模板才AC的) AC代码: #include& ...

  10. POJ 2449 Remmarguts' Date(第K短路 + A* + 最短路)题解

    题意:找出第k短路,输出长度,没有输出-1 思路:这题可以用A*做.A*的原理是这样,我们用一个函数:f = g + h 来表示当前点的预期步数,f代表当前点的预期步数,g代表从起点走到当前的步数,h ...

最新文章

  1. 阿里重金投数梦工场 布局PaaS动了谁的奶酪
  2. httpClient学习的初步认识
  3. MySQL的体系结构是C S结构_c/s结构的数据库系统结构是指
  4. ssl1202-滑雪【记忆化搜索法】
  5. [css] 有用过Flex吗?简要说下你对它的了解
  6. 阿里java架构师面试128题含答案:分布式架构+Dubbo+多线程+Redis
  7. c语言数字和字母输出的,请问这个用c怎么做:输入一串字符,分别统计其中数字和字母的个数...
  8. FileReader详解与实例---读取并显示图像文件 | JS Mix
  9. 《深入学习 Golang》并发编程
  10. 如何在MySQL中重置AUTO_INCREMENT?
  11. YUV 格式与 RGB 格式的相互转换公式总结(C++版)
  12. mysql -a_a|MySQL基础命令
  13. 变身mac达人,这几招技巧您有必要了解~
  14. nfine框架连接oracle,NFine快速开发框架(无后门)
  15. 关于ORA-00257问题的解决(归档程序错误)
  16. (二)Excel函数应用之数学和三角函数
  17. ubuntu 安装 hustoj
  18. Linux 中文件压缩方法与tar打包详解
  19. 最新红包抓娃娃源码带教程
  20. 学计算机U盘内存,用U盘启动盘快速检测电脑内存的详细教程

热门文章

  1. 代码编辑器sublime text 4130 for Mac
  2. ABBYY Lingvo European for Mac(万能词典)
  3. 苹果Mac开启root用户及切换到root用户的方法
  4. 技巧:macOS 在 Finder(访达)中查看文件夹大小
  5. 磁盘工具无法修复磁盘怎么办
  6. Mac新系统macOS Big Sur支持哪些Mac机型
  7. 遍历对象和数组的forEach函数
  8. AI+教育落地,百度大脑如何让校园更智能?
  9. 华住:移动时代,自主可控的架构秘密
  10. 如何写程序自动下载BBC Learning English的所有在线课程