翻出以前的代码看看

题意:走迷宫,遇到敌人要花一分钟。

#include<iostream>
#include<queue>
using namespace std;
char map[205][205];
int N = 999999999;
int dir[4][2]={{0,1},{1,0},{-1,0},{0,-1}};
int n,m;
struct node
{
int x;
int y;
int step;
friend bool operator<(node a, node b)
{
return a.step>b.step;
}
}begin,end;
int bfs()
{
priority_queue<node>q;
q.push(begin);
node temp,t;
int i;
while(!q.empty())
{
t=q.top();
q.pop();
for(i=0;i<4;i++)
{
temp.x=t.x+dir[i][0];
temp.y=t.y+dir[i][1];
if(map[temp.x][temp.y]!='#'&&temp.x>=0&&temp.x<n&&temp.y>=0&&temp.y<m)
{
if(map[temp.x][temp.y]=='.')
{
map[temp.x][temp.y]='#';
temp.step=t.step+1;
q.push(temp);
}
else if(map[temp.x][temp.y]=='x')
{
map[temp.x][temp.y]='#';
temp.step=t.step+2;
q.push(temp);
}
else
{
return end.step=t.step+1;
}
}
}
}
return end.step;
} int main()
{
int i,j;
while(cin>>n>>m)
{
for(i=0;i<n;i++)
{
getchar();
for(j=0;j<m;j++)
{
cin>>map[i][j];
if(map[i][j]=='a')
{
begin.x=i;
begin.y=j;
begin.step=0;
map[i][j]='#';
}
}
}
end.step=N;
if(bfs()==N)
cout<<"Poor ANGEL has to stay in the prison all his life."<<endl;
else
cout<<end.step<<endl;
}
return 0;
}
												

hdu 1242 Rescue_bfs+优先队列的更多相关文章

  1. hdu 1242(BFS+优先队列)

    Rescue Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  2. hdu 1242 Rescue

    题目链接:hdu 1242 这题也是迷宫类搜索,题意说的是 'a' 表示被拯救的人,'r' 表示搜救者(注意可能有多个),'.' 表示道路(耗费一单位时间通过),'#' 表示墙壁,'x' 代表警卫(耗 ...

  3. HDU 1242 (BFS搜索+优先队列)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1242 题目大意:多个起点到一个终点,普通点耗时1,特殊点耗时2,求到达终点的最少耗时. 解题思路: ...

  4. hdu - 1242 Rescue && hdu - 2425 Hiking Trip (优先队列+bfs)

    http://acm.hdu.edu.cn/showproblem.php?pid=1242 感觉题目没有表述清楚,angel的朋友应该不一定只有一个,那么正解就是a去搜索r,再用普通的bfs就能过了 ...

  5. HDU 1242 Rescue(优先队列)

    题目来源: http://acm.hdu.edu.cn/showproblem.php?pid=1242 题目描述: Problem Description   Angel was caught by ...

  6. HDU 1242 Rescue(BFS+优先队列)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1242 题目描述: Problem Description Angel was caught by t ...

  7. HDU 1242 -Rescue (双向BFS)&amp;&amp;( BFS+优先队列)

    题目链接:Rescue 进度落下的太多了,哎╮(╯▽╰)╭,渣渣我总是埋怨进度比别人慢...为什么不试着改变一下捏.... 開始以为是水题,想敲一下练手的,后来发现并非一个简单的搜索题,BFS做肯定出 ...

  8. hdu 1242:Rescue(BFS广搜 + 优先队列)

    Rescue Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submis ...

  9. hdu 1242 Rescue(BFS,优先队列,基础)

    题目 /******************以下思路来自百度菜鸟的程序人生*********************/ bfs即可,可能有多个’r’,而’a’只有一个,从’a’开始搜,找到的第一个’r ...

随机推荐

  1. grep搜索当前目录和递归搜索子目录中文本文件的特定pattern

    一般在windows上文本编辑器notepad++,UE这些都有这些功能,Linux下就换了一种方式,用grep来完成文件中信息查找的方式. grep -R -n --include="*. ...

  2. mysql logstash 配置

    [elk@dr-mysql01 mysql]$ cat logstash_mysql.conf input { file { type => "zj_mysql" path ...

  3. perl 创建文本框

    my $mw = MainWindow->new(-title => "Mem monitor"); $frm_name1 = $mw -> Frame()-&g ...

  4. 一个简单的算法,定义一个长度为n的数组,随机顺序存储1至n的的全部正整数,不重复。

    前些天看到.net笔试习题集上的一道小题,要求将1至100内的正整数随机填充到一个长度为100的数组,求一个简单的算法. 今天有空写了一下.代码如下,注释比较详细: using System; usi ...

  5. navigationBar 背景色

    if ([[[UIDevice currentDevice]systemVersion]floatValue] >= 7.0) { [[UINavigationBar appearance] s ...

  6. CATransform3D参数的意义

    经常忘记CATransform3D各参数的意思,记下来好好理解下   struct CATransform3D { CGFloat m11(x缩放),m12(y切变),m13(旋转),m14(); C ...

  7. MySql5.1在Win7下的安装与重装问题的解决

    痛苦啊痛苦,我也不知道这两天怎么了.上班没有精神,还打瞌睡,下班后又感觉很累.精力集中不起来. 这篇花了我好久的时间,我效率这么差,~\(≧▽≦)/~. 软件包下载 首先单击mysql-5.1.53- ...

  8. android 获取屏幕尺寸

    文章转载自:http://blog.csdn.net/congqingbin/article/details/7474276// 通过WindowManager获取 DisplayMetrics dm ...

  9. Springmvc和velocity使用的公用后台分页

    Springmvc和velocity使用的公用后台分页 类别                    [选择一个类别或键入一个新类别] Springmvc和velocity使用的公用后台分页 样式: 使 ...

  10. C# 静态类与非静态类、静态成员的区别分析

    静态类静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量.在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例化 ...