hdoj 1242 Rescue
Rescue
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 19985 Accepted Submission(s):
7110
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.)
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.
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."
/*
题意 :公主被抓(为什么公主老是被魔王抓,烂梗),我要去救公主 (其实我不想救,心累)
a表示公主所在位置,r是我所在位置,#是墙,.是路,X是怪,打怪要两点疲劳值,走路要一点
疲劳值,问救出公主要多少点疲劳值救出公主的话输出疲劳值点数如果救不出输出
"Poor ANGEL has to stay in the prison all his life."
题解:同 poj2312(我相信细微的差别你们能改出来)
*/ #include<stdio.h>
#include<string.h>
#include<queue>
#define MAX 210
using namespace std;
char map[MAX][MAX];
int n,m;
struct node
{
int x;
int y;
int time; friend bool operator < (node a,node b)//定义结构体的优先队列
{
return a.time>b.time;//花费时间少的先出队
} };
void bfs(int x1,int y1,int x2,int y2)
{
int j,i,ok=0; priority_queue<node>q;//定义结构 体优先队列 int move[4][2]={0,1,0,-1,1,0,-1,0};
node begin,end;
begin.x=x1;
begin.y=y1;
begin.time=0;
q.push(begin);
while(!q.empty())
{ end=q.top();//优先队列 q.pop();
if(end.x==x2&&end.y==y2)
{
ok=1;
break;
}
for(i=0;i<4;i++)
{
begin.x=end.x+move[i][0];
begin.y=end.y+move[i][1];
if(0<=begin.x&&begin.x<n&&0<=begin.y&&begin.y<m&&map[begin.x][begin.y]!='#')
{
if(map[begin.x][begin.y]=='x')
begin.time=end.time+2;
else
begin.time=end.time+1;
map[begin.x][begin.y]='#';
q.push(begin); }
}
}
if(ok)
printf("%d\n",end.time);//注意这里
else
printf("Poor ANGEL has to stay in the prison all his life.\n");
}
int main()
{
int j,i,s,t,k,x1,x2,y1,y2;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=0;i<n;i++)
scanf("%s",map[i]);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(map[i][j]=='a')
{
x2=i;y2=j;
}
else if(map[i][j]=='r')
{
x1=i;y1=j;
}
}
}
bfs(x1,y1,x2,y2);
}
return 0;
}
hdoj 1242 Rescue的更多相关文章
- BFS HDOJ 1242 Rescue
题目传送门 题意:从r走到a,遇到x多走一步,问最小走到a的步数 分析:因为r有多个,反过来想从a走到某个r的最小步数,简单的BFS.我对这题有特殊的感情,去年刚来集训队时肉鸽推荐了这题,当时什么都不 ...
- 【HDOJ】1242 Rescue
BFS+优先级队列. #include <iostream> #include <cstdio> #include <cstring> #include <q ...
- HDOJ/HDU 1242 Rescue(经典BFS深搜-优先队列)
Problem Description Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is ...
- hdu 1242 Rescue
题目链接:hdu 1242 这题也是迷宫类搜索,题意说的是 'a' 表示被拯救的人,'r' 表示搜救者(注意可能有多个),'.' 表示道路(耗费一单位时间通过),'#' 表示墙壁,'x' 代表警卫(耗 ...
- HDOJ并查集题目 HDOJ 1213 HDOJ 1242
Problem Description Today is Ignatius' birthday. He invites a lot of friends. Now it's dinner time. ...
- hdu 1242:Rescue(BFS广搜 + 优先队列)
Rescue Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submis ...
- hdu - 1242 Rescue && hdu - 2425 Hiking Trip (优先队列+bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1242 感觉题目没有表述清楚,angel的朋友应该不一定只有一个,那么正解就是a去搜索r,再用普通的bfs就能过了 ...
- HDU 1242 Rescue (BFS(广度优先搜索))
Rescue Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...
- hdu 1242 Rescue(bfs)
此刻再看优先队列,不像刚接触时的那般迷茫!这也许就是集训的成果吧! 加油!!!优先队列必须要搞定的! 这道题意很简单!自己定义优先级别! +++++++++++++++++++++++++++++++ ...
随机推荐
- UIMenuController搭配UIPasteboard,执行拷贝-黏贴操作-b
一.基本概念 UIKit框架中,可以直接执行拷贝黏贴操作的有:UITextView.UITextField和UIWebView,其他控件需要实现相关方法. 关于UIPasteboard ·黏贴板是ap ...
- Ubuntu 14.04 开启启动器图标最小化功能
转自Ubuntu 14.04 怎样开启启动器图标最小化功能 前本站报道过 Ubuntu 14.04 终于加入了启动器图标最小化功能,这个功能默认是不开启的,要怎么开启呢? 之前报道的原文阅读:Ubun ...
- 网页中插入Flvplayer视频播放器代码
http://blog.csdn.net/china_skag/article/details/7424019 原地址:http://yuweiqiang.blog.163.com/blog/stat ...
- ZOJ 3705 Applications
点我看题目 题意 : 真是一道又臭又长的模拟题啊,不过比赛的时候没看,赛完了补的. 给你N个候选人,让你从中选M个候选人,根据四个大规则来确定每个人的分数,然后选分数前M个人的输出. 1.在MOJ上做 ...
- IE10与IMG图片PNG显示不了 WP中的WebBrowser中无法查看PNG格式的图片
在IE10下,IMG的图片不能是PNG格式的,PNG格式显示不了,JPG显示就可以
- MapReduce的数据流程、执行流程
MapReduce的数据流程: 预先加载本地的输入文件 经过MAP处理产生中间结果 经过shuffle程序将相同key的中间结果分发到同一节点上处理 Recude处理产生结果输出 将结果输出保存在hd ...
- sql 不同server間寫入數據
select * from sys.servers sp_dropserver @server =N'' sp_dropserver '' ,'droplogins' EXEC master.dbo. ...
- 物联网操作系统HelloX V1.77(beta)版本发布
物联网操作系统HelloX V1.77发布 经过近半年的努力,物联网操作系统HelloX V1.77版本正式完成,源代码已上载到github(github.com/hellox-project/Hel ...
- 【转】foxmail突然打不开了,双击没反应,怎么回事呀
原文网址:http://tieba.baidu.com/p/3492526384 解决方法如下:1.进入foxmail安装目录(默认在D盘Program Files下层,右击foxmail这个文件夹, ...
- jquery图片播放插件Fancybox(灯箱)
效果预览Demo源码下载 Fancybox的特点如下: 可以支持图片.html文本.flash动画.iframe以及ajax的支持 可以自定义播放器的CSS样式 可以以组的形式进行播放 如果将鼠标滚动 ...