[Luogu2901][USACO08MAR]牛慢跑Cow Jogging Astar K短路
题目链接:https://daniu.luogu.org/problem/show?pid=2901
Astar的方程$f(n)=g(n)+h(n)$,在这道题中我们可以反向最短路处理出$h(n)$的精确值。然后跑Astar找K次最短路就好了。
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<queue> 5 using namespace std; 6 int inline readint(){ 7 int Num;char ch; 8 while((ch=getchar())<'0'||ch>'9');Num=ch-'0'; 9 while((ch=getchar())>='0'&&ch<='9') Num=Num*10+ch-'0'; 10 return Num; 11 } 12 int N,M,K; 13 int to[10010],ne[10010],w[10010],fir[1010],cnt=0; 14 void add(int a,int b,int c){ 15 to[++cnt]=b; 16 w[cnt]=c; 17 ne[cnt]=fir[a]; 18 fir[a]=cnt; 19 } 20 int nto[10010],nne[10010],nw[10010],nfir[1010],ncnt=0; 21 void nadd(int a,int b,int c){ 22 nto[++ncnt]=b; 23 nw[ncnt]=c; 24 nne[ncnt]=nfir[a]; 25 nfir[a]=ncnt; 26 } 27 int dis[1010]; 28 bool in[1010]; 29 queue <int> q; 30 void Spfa(){ 31 memset(dis,127/3,sizeof(dis)); 32 in[1]=true; 33 dis[1]=0; 34 q.push(1); 35 int u; 36 while(!q.empty()){ 37 int u=q.front(); 38 q.pop(); 39 in[u]=false; 40 for(int i=nfir[u];i!=-1;i=nne[i]){ 41 int v=nto[i]; 42 if(dis[v]>dis[u]+nw[i]){ 43 dis[v]=dis[u]+nw[i]; 44 if(!in[v]){ 45 in[v]=true; 46 q.push(v); 47 } 48 } 49 } 50 } 51 } 52 struct NODE{ 53 int d,num; 54 NODE(int _d=0,int _num=0){ 55 d=_d; 56 num=_num; 57 } 58 bool operator < (const NODE &_)const{ 59 return d>_.d; 60 } 61 }; 62 int ans[110],rk=0; 63 priority_queue <NODE> Q; 64 void Astar(){ 65 Q.push(NODE(dis[N],N)); 66 NODE u; 67 while(!Q.empty()){ 68 u=Q.top(); 69 Q.pop(); 70 if(u.num==1){ 71 ans[++rk]=u.d; 72 if(rk==K) return; 73 } 74 for(int i=fir[u.num];i!=-1;i=ne[i]) 75 Q.push(NODE(u.d-dis[u.num]+w[i]+dis[to[i]],to[i])); 76 } 77 } 78 int main(){ 79 memset(fir,-1,sizeof(fir)); 80 memset(nfir,-1,sizeof(nfir)); 81 N=readint(); 82 M=readint(); 83 K=readint(); 84 for(int i=1;i<=M;i++){ 85 int a=readint(), 86 b=readint(), 87 c=readint(); 88 add(a,b,c); 89 nadd(b,a,c); 90 } 91 Spfa(); 92 Astar(); 93 for(int i=1;i<=K;i++) 94 if(ans[i]) printf("%d\n",ans[i]); 95 else puts("-1"); 96 return 0; 97 }
转载于:https://www.cnblogs.com/halfrot/p/7565296.html
[Luogu2901][USACO08MAR]牛慢跑Cow Jogging Astar K短路相关推荐
- P2901 [USACO08MAR]牛慢跑Cow Jogging
题目描述 传送门 Bessie has taken heed of the evils of sloth and has decided to get fit by jogging from the ...
- 洛谷 P3111 [USACO14DEC]牛慢跑Cow Jog_Sliver
P3111 [USACO14DEC]牛慢跑Cow Jog_Sliver 题目描述 The cows are out exercising their hooves again! There are N ...
- 【USACO Mar08】 奶牛跑步 A-star k短路
Description Bessie准备用从牛棚跑到池塘的方法来锻炼. 但是因为她懒,她只准备沿着下坡的路跑到池塘,然后走回牛棚. Bessie也不想跑得太远,所以她想走最短的路经. 农场上一共有M( ...
- 洛谷 P3014 [USACO11FEB]牛线Cow Line
P3014 [USACO11FEB]牛线Cow Line 题目背景 征求翻译.如果你能提供翻译或者题意简述,请直接发讨论,感谢你的贡献. 题目描述 The N (1 <= N <= 20) ...
- bzoj 1598: [Usaco2008 Mar]牛跑步 [k短路 A*] [学习笔记]
1598: [Usaco2008 Mar]牛跑步 题意:k短路 ~~貌似A*的题目除了x数码就是k短路~~ \[ f(x) = g(x) + h(x) \] \(g(x)\)为到达当前状态实际代价,\ ...
- AcWing 179. 八数码 178. 第K短路 (A-star)
A-star 算法 算法证明略 做题步骤: 如果搜索空间过大,考虑使用A*算法,正常做真实距离,思考估价函数,验证估价函数的正确性,队列换成优先队列,新加一维 真实+估计,终点出队即为答案 AcWin ...
- 第K短路(A*(astar)算法)
给定一张N个点(编号1,2-N),M条边的有向图,求从起点S到终点T的第K短路的长度,路径允许重复经过点或边. 注意: 每条最短路中至少要包含一条边. 输入格式 第一行包含两个整数N和M. 接下来M行 ...
- HDU6181(K短路问题)
不知道为什么这个一直爆内存! #include<iostream> #include<algorithm> #include<cmath> #include< ...
- poj2449(k短路算法)
K 短路问题(A* 启发式广搜) 1.k 短路问题就是最短路问题的延申,要找出第 k 短的路径.用广搜进行路径查找,第一次找到的 就是最短路,第二次找到的是第 2 短 路⋯以此类推.所以我们只需要一直 ...
最新文章
- 创建 Pool VIP - 每天5分钟玩转 OpenStack(122)
- 智源社区 2021 AI 大调查开启!
- python能做什么项目好-python能做什么项目
- Java编程思想:擦除的神秘之处
- C++STL的string容器
- CodeForces - 1321E World of Darkraft: Battle for Azathoth(二维偏序+线段树)
- 【线上分享】边缘计算与云原生架构应用及实践解析
- 收藏列表放入MySQL还是redis_mysql导入redis
- 吴恩达机器学习 12.异常检测
- FFmpeg源代码简单分析:avcodec_close()
- android连接airprint打印机,AirPrint:iOS的打印机
- 极客大学架构师训练营 系统架构 大型网站技术架构 维基百科、淘宝、新浪微博案例分析 第8课 听课总结
- PAT 乙级 Java 合集
- php 拼音搜索,通过拼音模糊搜索汉字的功能实现
- RTT笔记-分析自动初始化机制
- 【原创】基于SSM的医院预约挂号系统(医院预约挂号系统毕设源代码)
- win7计算机不能设置双屏怎么回事,win7怎么设置双屏显示?Win7双屏显示设置的方法...
- 数据分析 学习小结记录
- CVPR2022知识蒸馏用于目标检测:Focal and Global Knowledge Distillation for Detectors
- 2022春招第一波投递时间预测,早看早知道
热门文章
- java开发视频教学,阿里创新发布《新高并发宝典》
- 用python打印三角形图形创意图片_图形创意_尔雅_网课答案2020
- TypeError: __init__() missing 1 required positional argument: 'on_delete' 解决办法
- 湖北武汉三维扫描服务模具检测3D抄数设计数字化解决方案
- cornerstone怎样批量添加目录或有多级子目录的目录
- OpenGL学习笔记(5)3D基本概念
- list与dataframe的转换
- 李峋同款-C语言版本-爱心
- educode实训平台---二维码名片制作
- POJ 百炼 保研机试 2807:两倍