(poj 2449 Remmarguts' Date)<A*-K短路模板>
来源:互联网 发布:windows解压war包 编辑:程序博客网 时间:2024/06/07 01:30
传送门
Solution
推几个b站讲A*的视频(全英文没字幕看个p系列。。雾)
Code
// by spli#include<cstring>#include<cstdio>#include<iostream>#include<algorithm>#include<queue>#include<vector>using namespace std;const int N=1010;const int M=100010;int n,m,s,t,k;struct node{ int to,nxt,val;}e1[M],e2[M];int h1[N],h2[N],c1,c2;int dis[N];bool vis[N];queue<int>q;struct A{ int id,f,g; bool operator <(const A &b)const{ return b.f==f?b.g<g:(b.f<f); }};priority_queue<A>Q;void add1(int f,int t,int v){ c1++; e1[c1]=(node){t,h1[f],v}; h1[f]=c1;}void add2(int f,int t,int v){ c2++; e2[c2]=(node){t,h2[f],v}; h2[f]=c2;}void spfa(){ memset(dis,0x7f,sizeof(dis)); dis[t]=0;vis[t]=1;q.push(t); while(!q.empty()){ int u=q.front(); q.pop(); vis[u]=0; for(int i=h2[u];i!=-1;i=e2[i].nxt){ int v=e2[i].to; if(dis[v]>dis[u]+e2[i].val){ dis[v]=dis[u]+e2[i].val; if(!vis[v]){ vis[v]=1; q.push(v); } } } }}void A_star(){ int cnt=0; int f,g; if(s==t) k++;//可以说是很无耻了 Q.push((A){s,dis[s],0}); while(!Q.empty()){ A u=Q.top(); Q.pop(); if(u.id==t){ cnt++; if(cnt==k){ printf("%d\n",u.g); return; } } for(int i=h1[u.id];i!=-1;i=e1[i].nxt){ int v=e1[i].to; g=u.g+e1[i].val; f=g+dis[v]; Q.push((A){v,f,g}); } } printf("-1");}int main(){ memset(h1,-1,sizeof(h1)); memset(h2,-1,sizeof(h2)); scanf("%d%d",&n,&m); int x,y,z; for(int i=1;i<=m;++i){ scanf("%d%d%d",&x,&y,&z); add1(x,y,z);add2(y,x,z); } scanf("%d%d%d",&s,&t,&k); spfa(); A_star(); return 0;}
阅读全文
0 0
- (poj 2449 Remmarguts' Date)<A*-K短路模板>
- POJ 2449 Remmarguts' Date (A*+K短路)
- poj 2449 Remmarguts' Date(第K短路 A*)
- poj 2449 Remmarguts' Date(A*求第K短路)
- POJ 2449 Remmarguts' Date(A*+SPFA)K短路问题
- poj 2449 Remmarguts' Date(K短路,A*算法)
- POJ 2449 Remmarguts' Date(A* - 第K短路)
- POJ 题目2449 Remmarguts' Date(K短路,A*+spfa)
- poj 2449 Remmarguts' Date(第K短路 A*)
- poj 2449 Remmarguts' Date (A*,k短路)
- POJ 2447 Remmarguts' Date【k短路 SPFA+A* 模板题】
- POJ 2449 Remmarguts' Date(k短路)
- poj 2449 Remmarguts' Date(K短路)
- poj 2449 Remmarguts' Date (k短路)
- POJ 2449 Remmarguts' Date(K短路)
- 【K短路】【A星】Remmarguts' Date POJ 2449 A-Star
- poj2449 Remmarguts' Date --- k短路模板(SPFA+A*)
- POJ 2449 Remmarguts' Date (第k短路 A*搜索算法模板)
- ATP 和淡水工厂(factory)
- Spark 快速入门
- HDU
- 河南省多校联萌(四)
- Windows常用命令
- (poj 2449 Remmarguts' Date)<A*-K短路模板>
- HDU
- HDU
- SPSS--独立样本t检验与配对样本t检验
- C#整体总结
- mutex 与 CAS
- poj 2109
- dp day3/4-二维dp
- 关于思想无限的一点思考