https://daniu.luogu.org/problem/show?pid=2483

A*求k短路和dijkstra算法很相似。
我们先把边反向,预处理出h(x),表示从x到T的最短路径长度。
另g(x)为目前为止从起点到x的距离。
以(h(x)+g(x))为关键字维护一个小根堆,然后跑dijkstra即可。
第k次到达终点的时候输出。
正确性显然。

这个是我们xxy学长给我们讲的,其实已经很明了了;
当然Fop_zz的博客有详细的介绍;
这里
我就不多说了;
然后SPFA炸了;
改好就AC了;
这;
当然内存是在bz过不了的;

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<queue>
#define Ll long long
using namespace std;
double h[5010];
struct T{int x;double v;bool operator < (const T &a) const{return a.v+h[a.x]<v+h[x];}
};
priority_queue<T>Q;
struct cs{int to,next;double v;
}a[200010];
struct In{int x,y;double z;
}r[200010];
int head[5010],ll;
int q[400010];
bool vi[5010];
int n,m,ans;
double money;
void init(int x,int y,double z){a[++ll].to=y;a[ll].v=z;a[ll].next=head[x];head[x]=ll;
}
void SPFA(int S){int l=0,r=1;q[1]=S;for(int i=0;i<=n;i++)h[i]=1e9;h[S]=0;while(r>l){int x=q[++l];for(int k=head[x];k;k=a[k].next)if(a[k].v+h[x]<h[a[k].to]){h[a[k].to]=a[k].v+h[x];if(!vi[a[k].to]){vi[a[k].to]=1;q[++r]=a[k].to;}}vi[x]=0;}
}
void Dijkstra(int S,int E){T c;c.v=0;c.x=S;Q.push(c);while(!Q.empty()){c=Q.top();Q.pop();if(c.x==E){money-=c.v;if(money<0)return;ans++;}for(int k=head[c.x];k;k=a[k].next){T p;p.x=a[k].to;p.v=c.v+a[k].v;Q.push(p);          }}
}
int main(){scanf("%d%d%lf",&n,&m,&money);for(int i=1;i<=m;i++){scanf("%d%d%lf",&r[i].x,&r[i].y,&r[i].z);init(r[i].y,r[i].x,r[i].z);}SPFA(n);memset(head,0,sizeof head);ll=0;for(int i=1;i<=m;i++)init(r[i].x,r[i].y,r[i].z);Dijkstra(1,n);printf("%d",ans);
}

转载于:https://www.cnblogs.com/largecube233/p/6797872.html

k短路-洛谷P2483 [SDOI2010]魔法猪学院相关推荐

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

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

  2. bzoj 1975: [Sdoi2010]魔法猪学院 [k短路]

    1975: [Sdoi2010]魔法猪学院 裸题... 被double坑死了 #include <iostream> #include <cstdio> #include &l ...

  3. 1975: [Sdoi2010]魔法猪学院

    1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec   Memory Limit: 64 MB Submit: 1855   Solved: 567 [ Submit][ ...

  4. [SDOI2010] 魔法猪学院

    魔法猪学院 题目背景 感谢@kczno1 @X_o_r 提供hack数据 题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iP ...

  5. 洛谷P2483 Bzoj1975 [SDOI2010]魔法猪学院

    题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世界的世界本原有了很多的了解:众所周知,世界是由元素构成的:元素与 ...

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

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

  7. [SDOI2010]魔法猪学院(k短路)

    A*板子题.我的code只能在luogu上过,bzoj上RE/MLE不清楚为啥. 蒟蒻到AFO前2个月不到的时间才学A*,A*其实就是bfs过程中进行剪支删除没必要的搜索.然后其实上这样剪支即可:如果 ...

  8. BZOJ1975[Sdoi2010]魔法猪学院——可持久化可并堆+最短路树

    题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世界的世界本原有了很多的了解:众所周知,世界是由元素构成的:元素与 ...

  9. 启发式搜索 luogu2483——[SDOI2010]魔法猪学院

    luogu2483 这题不知道为什么,我bzoj上死都过不去 然而luogu不断的调数组大小后终于卡过去了(黑人问号 内存206MB..时间4s+ 本题重点就在于求出k短路 然后很简单的贪心减一下就好 ...

最新文章

  1. Android 自定义注解(Annotation)
  2. R语言与非参数检验之单样本位置检验
  3. 背包例题の01,完全,多重
  4. 不要老去打断程序员的工作
  5. bootstrapTable表格格式化日期后,IE浏览器显示不正常,为NaN-NaN-NaN
  6. 心离钱越远,钱离口袋越近,心离钱越近,钱离口袋越远
  7. Linux 进程间通讯方式 pipe()函数
  8. 一种边播边下的播放策略
  9. 329例精选matlab算法原理及源码详解——老生谈算法
  10. Fate Decision剧本
  11. swing api 文档
  12. Unity Rect.OverLaps(Rect other) 改进
  13. 项目管理中的进度控制与目标计划
  14. 基于机器学习的锂离子电池健康状态预测:进展与展望
  15. HTTPSQS 1.7 版本更新内容
  16. 香港银行开户过程需要注意些什么
  17. 猫耳FM音频转换成MP3格式
  18. SHU1757 村村通工程(Floyd算法)
  19. 联想计算机保修几年,联想笔记本电脑保修期一般多长时间
  20. Google Earth Engine ——GCOM-C 进行长期和持续的全球陆地地表温度数据集(JAXA/GCOM-C/L3/LAND/LST/V1)

热门文章

  1. AcWing 9. 分组背包问题(分组背包模板)
  2. 第二章从收入的预测分析开始
  3. 修改Jupyter Notebook的默认路径
  4. 前端知识天天学(1)
  5. RDLC报表显示存储于数据库的图片
  6. 英国政府采用开源办公套件“GovOffice”
  7. Atitit.struts排除url 的设计and 原理 自定义filter 排除特定url
  8. 迈克菲实验室:Flame病毒的深度分析
  9. PetShop 4.0知识点:加密和解密Web.config文件的配置节
  10. SSAS : 如何编写自定义挖掘算法