博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 2449 Remmarguts' Date 求第k短路 Astar算法
阅读量:4919 次
发布时间:2019-06-11

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

=.=好菜

#include 
#include
#include
#include
#include
using namespace std;const int N = 1e3+10;const int M = 100000+10;typedef long long ll;const ll INF = 1e15;int n,m,head[N],rehead[N],tot;struct node { int v,w,next;}E[M],reE[M];void init() { tot=0; memset(head,0,sizeof(head)); memset(rehead,0,sizeof(rehead));}void addEdge(int u,int v,int w) { ++tot; E[tot].next = head[u]; head[u]=tot; E[tot].v = v; E[tot].w = w; reE[tot].next = rehead[v]; rehead[v]=tot; reE[tot].v = u; reE[tot].w = w;}bool inq[N]; ll d[N];queue
que;void spfa(int src) { while(!que.empty()) que.pop(); for(int i=0;i
d[now] + w) { d[v] = d[now] + w; if(!inq[v]) que.push(v); } } }}struct A { int v; ll f,g; ///v是current点 f(v)=g(v)+h(v) g(v):st到v的估值, h(v):v到ed的估值 bool operator<(const A other) const { if(other.f == f) return other.g < g; return other.f < f; }};int Astar(int st,int ed,int k) { priority_queue
Q; if(st==ed) k++; if(d[st]==INF) return -1; int cnt = 0; A t,tt; t.v=st,t.g=0,t.f=t.g+d[st]; Q.push(t); while (!Q.empty()) { tt = Q.top(); Q.pop(); int u=tt.v; if(u == ed) { cnt++; if(cnt==k) return tt.g; } for(int i=head[u]; i; i=E[i].next) { t.v = E[i].v; t.g = tt.g + E[i].w; t.f = t.g + d[t.v]; Q.push(t); } } return -1;}int main () { //freopen("in.txt","r",stdin); while (scanf("%d %d", &n, &m)==2) { init(); for(int i=1;i<=m;i++) { int x,y,z; scanf("%d%d%d",&x,&y,&z); addEdge(x,y,z); } int s,t,k; scanf("%d%d%d",&s, &t, &k); spfa(t); //for(int i=1;i<=n;i++) cout << d[i]<

 

转载于:https://www.cnblogs.com/Draymonder/p/9634958.html

你可能感兴趣的文章
spring学习-ApplicationContext-spring上下文深入理解
查看>>
日、周、月活跃用户数,用户流失率
查看>>
java学习-消息队列rabbitmq的组成
查看>>
hdu 4611 Balls Rearrangement
查看>>
在同一iphone项目添加lite版
查看>>
jsp实现仿QQ空间新建多个相册名称,向相册中添加照片
查看>>
NSOperation、NSOperationQueue(III)
查看>>
DB120连接TTL--OpenWRT
查看>>
20155234 2016-2017-2 《Java程序设计》第8周学习总结
查看>>
自定义复选框 checkbox 样式
查看>>
jQuery选择器
查看>>
Day2:字符串常用方法
查看>>
正则表达式不匹配括号
查看>>
HBase相关
查看>>
spring IoC容器的实现。
查看>>
项目所遇问题
查看>>
flash与php
查看>>
Oracle Dataguard三种保护模式
查看>>
DataGridView添加的数据最后一步无法生效的问题。
查看>>
第三章:数组[4Arrays]
查看>>