博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 2499第K短路模板
阅读量:4692 次
发布时间:2019-06-09

本文共 2189 字,大约阅读时间需要 7 分钟。

第k*短路模板(单项边)#include 
#include
#include
#include
#include
#define Max 100005#define inf 1<<28using 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
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

你可能感兴趣的文章
宏的方式显示ALV
查看>>
数据库设计三大范式的理解
查看>>
20180702小测
查看>>
13个 ASP.NET MVC 的扩展
查看>>
Navicat Premium 连接MySQL数据库出现Authentication plugin 'caching_sha2_password' cannot be loaded的解决方案...
查看>>
bzoj3527 [Zjoi2014]力
查看>>
漫谈:机器学习中距离和相似性度量方法
查看>>
二重循环
查看>>
对于软件工程的期待
查看>>
C++初识
查看>>
xml读取
查看>>
Linux编程环境
查看>>
说说final关键字(好像有干货)
查看>>
ps 常用快捷键
查看>>
算术基本定理
查看>>
HDU 1629 迷宫城堡
查看>>
codeforces 390C Inna and Candy Boxes
查看>>
JNDI是什么
查看>>
Oracle用户被锁定解决方法
查看>>
jsoup Java HTML解析器:使用选择器语法来查找元素
查看>>