【杭电1242】广搜+队列
来源:互联网 发布:mac系统pdf编辑软件 编辑:程序博客网 时间:2024/05/18 09:17
Rescue
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uDescription
Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is described as a N * M (N, M <= 200) matrix. There are WALLs, ROADs, and GUARDs in the prison.
Angel's friends want to save Angel. Their task is: approach Angel. We assume that "approach Angel" is to get to the position where Angel stays. When there's a guard in the grid, we must kill him (or her?) to move into the grid. We assume that we moving up, down, right, left takes us 1 unit time, and killing a guard takes 1 unit time, too. And we are strong enough to kill all the guards.
You have to calculate the minimal time to approach Angel. (We can move only UP, DOWN, LEFT and RIGHT, to the neighbor grid within bound, of course.)
Angel's friends want to save Angel. Their task is: approach Angel. We assume that "approach Angel" is to get to the position where Angel stays. When there's a guard in the grid, we must kill him (or her?) to move into the grid. We assume that we moving up, down, right, left takes us 1 unit time, and killing a guard takes 1 unit time, too. And we are strong enough to kill all the guards.
You have to calculate the minimal time to approach Angel. (We can move only UP, DOWN, LEFT and RIGHT, to the neighbor grid within bound, of course.)
Input
First line contains two integers stand for N and M.
Then N lines follows, every line has M characters. "." stands for road, "a" stands for Angel, and "r" stands for each of Angel's friend.
Process to the end of the file.
Then N lines follows, every line has M characters. "." stands for road, "a" stands for Angel, and "r" stands for each of Angel's friend.
Process to the end of the file.
Output
For each test case, your program should output a single integer, standing for the minimal time needed. If such a number does no exist, you should output a line containing "Poor ANGEL has to stay in the prison all his life."
Sample Input
7 8#.#####.#.a#..r.#..#x.....#..#.##...##...#..............
Sample Output
13
#include<iostream>#include<cstring>#include<queue>using namespace std;int vis[200][200],sx,sy,n,m,prove;char map[200][200];int dx[4]={1,0,-1,0};int dy[4]={0,1,0,-1};int judge(int x,int y){if(x>=n||x<0||y<0||y>=m)return 0;elsereturn 1;}struct node{int x,y; int time;}s,e;queue<node>q;void bfs(){while(!q.empty())q.pop();memset(vis,0,sizeof(vis));s.time=0;s.x=sx;s.y=sy;q.push(s);//把所有r的位置存入队列 vis[s.x][s.y]=1;//标记为走过的 while(!q.empty()){s=q.front();q.pop();if(map[s.x][s.y]=='a')//找到Angle,输出时间 {cout<<s.time<<endl;prove=1;}if(map[s.x][s.y]=='x')//遇到警卫,先打败,再次进入队列 {map[s.x][s.y]='.';//变为道路 s.time+=1;q.push(s);continue;}for(int i=0;i<4;i++){e.x=s.x+dx[i];e.y=s.y+dy[i];if(map[e.x][e.y]=='#'||judge(e.x,e.y)==0||vis[e.x][e.y]==1)continue;//else e.time=s.time+1;q.push(e);vis[e.x][e.y]=1;}}}int main(){while(cin>>n>>m){for(int i=0;i<n;i++)for(int j=0;j<m;j++){cin>>map[i][j];if(map[i][j]=='r'){sx=i;sy=j;//记录朋友的位置 ,不止一个 }}prove=0;bfs();if(prove==0)cout<<"Poor ANGEL has to stay in the prison all his life."<<endl;}return 0;}
0 0
- 【杭电1242】广搜+队列
- Rescue HDU杭电1242【广搜+优先队列】
- 杭电-1242 Rescue(优先队列+广搜)
- 杭电1242-Rescue-广搜-优先队列
- A计划 HDU杭电2102【广搜+STL队列】
- 杭电 1242 Rescue(广搜)
- 杭电OJ 4198(广搜+优先队列~)图搜.Quick out of the Harbour
- 杭电 2128 Tempter of the Bone II(广搜)bfs+优先队列+伴随map
- HDU--杭电--1242--Rescue--广搜--又是一个所谓的优先队列起作用的题,擦,虽然比上一个容易,不过还是拿来摆摆
- HDU--杭电--1026--Ignatius and the Princess I--广搜--直接暴力0MS,优先队列的一边站
- hdu 1242 优先队列广搜
- HDU 1242 Rescue(广搜+优先队列)
- hdoj-1242-Rescue【广搜+优先队列】
- HDU-1242 Rescue( 广搜 + 优先队列)
- 广搜+优先队列
- HDU--杭电--1241--Oil Deposits--广搜
- HDU--杭电--1253--胜利大逃亡--广搜
- HDU--杭电--1240--Asteroids!--广搜--贴个水题别群殴我
- _bdhmProtocol 解释
- centos yum快速安装php5.4
- 网页应该设计为多少像素才合适?
- JAVA中的Date类与Calendar类
- js的宽高度offsetWidth;clientWidth;
- 【杭电1242】广搜+队列
- nyoj16 矩形嵌套 排序+最长增长子序列
- 获得推送创建通知的相关内容
- 杭电2030解题代码
- HDU5773(The All-purpose Zero LIS变形)
- C++中可调用对象
- cadence学习2—cadence 如何拷贝别人图纸中的原件封装
- QingCloud Insight 2016:诠释云计算未来图景
- 欢迎使用CSDN-markdown编辑器