HDOJ1242(BFS)
来源:互联网 发布:图片分析软件 编辑:程序博客网 时间:2024/05/21 15:03
大意:r是起点,a是终点,遇到x时间加一,求到达最短时间。
分析:BFS水题。。。。
代码:
#include <iostream>#include<cstdio>#include<queue>#include<cstring>using namespace std;int n,m;int next1[4][2]={{0,1},{0,-1},{1,0},{-1,0}};typedef pair<int,int>P;char map[205][205];int num[205][205];int bfs(int sx,int sy,int ex,int ey){ queue<P>q; while(!q.empty()) q.pop(); q.push(P(sx,sy)); num[sx][sy]=1; while(!q.empty()) { P step=q.front(); if(step.first==ex&&step.second==ey) return num[ex][ey]; for(int i=0;i<4;i++) { int nx=step.first+next1[i][0]; int ny=step.second+next1[i][1]; if(nx>=0&&nx<n&&ny>=0&&ny<m&&map[nx][ny]!='#'&&!num[nx][ny]) { if(map[nx][ny]=='.'||map[nx][ny]=='a') { q.push(P(nx,ny)); num[nx][ny]=num[step.first][step.second]+1; } if(map[nx][ny]=='x') { q.push(P(nx,ny)); num[nx][ny]=num[step.first][step.second]+2; } } } q.pop(); }return 0;}int main(){ while(scanf("%d%d",&n,&m)!=EOF) { memset(num,0,sizeof(num)); int x1,y1,x2,y2; for(int i=0;i<n;i++) scanf("%s",map[i]); for(int i=0;i<n;i++) for(int j=0;j<m;j++) { if(map[i][j]=='r') { x1=i;y1=j; } if(map[i][j]=='a') { x2=i;y2=j; } } int flag=bfs(x1,y1,x2,y2); if(flag) printf("%d\n",flag-1); else printf("Poor ANGEL has to stay in the prison all his life.\n"); } return 0;}
0 0
- BFS--hdoj1242
- HDOJ1242(BFS)
- 迷宫问题:hdoj1242--BFS基本应用
- hdoj1242 Rescue
- Rescue<hdoj1242>
- hdoj1242-【Rescue】
- HDOJ1242 基础宽搜题
- 【记忆化DFS】HDOJ1242 Rescue
- BFS
- bfs
- BFS
- BFS
- bfs
- BFS
- bfs
- BFS
- BFS
- bfs
- js中let和var定义变量的区别
- 关于ORA-01445:无法从不带保留关键字的表的连接视图中选择ROWID或采样
- Golang Basic - select and channel usage
- office高级技能——使用通配符进行查找替换
- Linux 常用命令
- HDOJ1242(BFS)
- Java Web中界面之间传值的实现方法
- java谜题--java运行时修改引用类的静态常量
- 网站DDOS攻击防护实战老男孩经验心得分享 【转】
- Balloons(山东省第一届ACM省赛)
- JAVA 全局变量 声明与定义
- 机器学习笔记04:逻辑回归(Logistic regression)、分类(Classification)
- Python 组合
- 控制器数据逆传(代理设计模式解析)