hdu 1548 A strange lift 最短路 spfa模板
2016-03-29 21:41
330 查看
题意:一个电梯每层楼可以上ki层,或下ki层,若到达的层合法。求电梯从A层到B层的最少移动次数,若不能到达输出-1。
简单最短路径,每层与其能到的层连有向边,权值为1。建图后spfa模板即可。
简单最短路径,每层与其能到的层连有向边,权值为1。建图后spfa模板即可。
#include <iostream> #include<cmath> #include<cstring> #include<cstdio> #define INF 0x7ffffff #define N 220 using namespace std; int a ,d ,v ,q ,n,s,t; int spfa(int s,int t) { for(int i=1;i<=n;i++) d[i]=INF,v[i]=0; int cnt=0; q[cnt++]=s; v[s]=1; d[s]=0; while(cnt>0) { int c=q[--cnt]; v[c]=0; for(int i=1;i<=n;i++) { if(a[c][i]==1&&d[i]>d[c]+a[c][i]) { d[i]=d[c]+a[c][i]; if(!v[i]) v[i]=1,q[cnt++]=i; } } } if(d[t]==INF) return -1; return d[t]; } int main() { while(~scanf("%d",&n)&&n) { scanf("%d%d",&s,&t); memset(a,0,sizeof(a)); for(int i=1;i<=n;i++) { int f; scanf("%d",&f); if(i-f>=1) a[i][i-f]=1; if(i+f<=n) a[i][i+f]=1; } cout<<spfa(s,t)<<endl; } }
相关文章推荐
- 实验1 交叉编译工具链建立实验 64位机问题
- Spring入门
- 一牛人博客导航
- symonfy 项目根目录下没有 bin/console 文件的解决方法
- 社团费吧
- hdu 1176 免费馅饼【DP+详解】
- 旅の途中
- BZOJ 3759 Hungergame
- Python requests“Max retries exceeded with url” error
- string的assign用法
- 机器学习&数据挖掘笔记_14(GMM-HMM语音识别简单理解)
- JavaGUI设计
- Laravel 中的多组认证模式
- 第四周项目3-随机函数
- 128.LeetCode Longest Consecutive Sequence(hard)[数组 排序 最长连续增长子序列]
- tableView static cells不显示
- 傅立叶变换-MATLAB
- java反转链表
- 【Java/Android】对回调机制的理解
- MySQL同时执行多条查询