这道题我拖了半年,,,终于写出来了

思路:

先反向建边 从终点做一次最短路 —>这是估价函数h(x)

再正常建边,从起点搜一遍 (priority_queue(h(x)+g(x)))

g(x)是已经走过的。。

思路比较简单,,, 但是我总是MLE

原因:写挫了……

刷了三页… …

//By SiriusRen
#include <queue>
#include <cstdio>
#include <cstring>
using namespace std;
#define N 100200
int n,m,xx[N],yy[N],zz[N],tot,first[1005],next[N],v[N],w[N],s,e,k,h[1005],vis[1005];
void add(int x,int y,int z){w[tot]=z,v[tot]=y,next[tot]=first[x],first[x]=tot++;}
struct Node{int now,h,g;}jy;
priority_queue<Node>pq;
bool operator < (Node a,Node b){return a.g+a.h>b.g+b.h;}
void Dijkstra(){
memset(h,0x3f,sizeof(h));
h[e]=0,jy.now=e;
pq.push(jy);
while(!pq.empty()){
Node t=pq.top();pq.pop();
if(!vis[t.now])vis[t.now]=1;
else continue;
for(int i=first[t.now];~i;i=next[i])
if(!vis[v[i]]&&h[v[i]]>h[t.now]+w[i]){
h[v[i]]=h[t.now]+w[i];
jy.now=v[i];jy.g=h[v[i]];
pq.push(jy);
}
}
}
int A_star(){
memset(vis,0,sizeof(vis));
jy.now=s;jy.g=0;jy.h=h[s];
pq.push(jy);
while(!pq.empty()){
Node t=pq.top();pq.pop();
vis[t.now]++;
if(vis[t.now]>k)continue;
if(vis[e]==k)return t.g;
for(int i=first[t.now];~i;i=next[i]){
jy.now=v[i],jy.g=t.g+w[i],jy.h=h[jy.now];
pq.push(jy);
}
}
return -1;
} int main(){
memset(first,-1,sizeof(first));
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
scanf("%d%d%d",&xx[i],&yy[i],&zz[i]),add(yy[i],xx[i],zz[i]);
scanf("%d%d%d",&s,&e,&k);
if(s==e)k++;
Dijkstra();
tot=0,memset(first,-1,sizeof(first));
for(int i=1;i<=m;i++)add(xx[i],yy[i],zz[i]);
printf("%d\n",A_star());
}

最新文章

  1. HDU5322 Hope(DP + CDQ分治 + NTT)
  2. 马士兵Java视频教程 —— 学习顺序
  3. angularjs的四大特征
  4. 动态下载 Yahoo 网络数据存入 Microsoft SQL Server 再 Matlab 调用的一个完整例子
  5. IIS5与IIS6 应用程序生命周期和页生命周期
  6. sqlite时间比较语法
  7. shiro添加注解@RequiresPermissions不起作用
  8. thinkphp 3+ 观后详解 (5)
  9. [算法] 冒泡排序 Bubble Sort
  10. 【制作镜像】BCEC制作镜像
  11. SQLServer数据类型优先级对性能的影响
  12. SnackbarUtilDemo【Snackbar的封装类】
  13. js数据类型以及数组字符串常用方法
  14. MySQL Binlog与数据变更
  15. 阿里druid连接池监控配置
  16. glsl boom
  17. iOS 开发笔记-UILable/UIFont/UIButton常见设置
  18. mRemoteNG
  19. GitHub搭建博客过程
  20. centos7 編譯 chmsee

热门文章

  1. bzoj3626【LNOI2014】LCA
  2. 设计模式入门之代理模式Proxy
  3. mariadb克隆
  4. [SICP] 求值规则
  5. javascript系列-class9.DOM(上)
  6. [JZOJ 5908] [NOIP2018模拟10.16] 开荒(kaihuang)解题报告 (树状数组+思维)
  7. xBIM 基础03 基本模型操作
  8. FastJSON杂项
  9. Spark 运行机制及原理分析
  10. Android setImageResource与setImageBitmap的区别