hdu 1242 (bfs+优先队列)

原创 2013年12月06日 00:36:37
# include <iostream>
# include <queue>
# include <cstring>
using namespace std;
int m,n;
char map[205][205];
int visit[205][205];
int xx[4]={1,-1,0,0};
int yy[4]={0,0,1,-1};
struct point
{
	int x;
	int y;
	int step;
	friend bool operator < (point a,point b)
	{
		return a.step>b.step;
	}
}a,b;
int bfs()
{
	int flag=0;
	memset(visit,0,sizeof(visit));
	visit[a.x][a.y]=1;
	priority_queue<point> q;
	q.push(a);
	while(!q.empty())
	{
		b=q.top();
		q.pop();
		int i;
		if(map[b.x][b.y] == 'r')  
        {  
            flag = b.step;  
            return flag;  
        }     
		for(i=0;i<4;i++)
		{
			a.x=b.x+xx[i];
			a.y=b.y+yy[i];
			a.step=b.step+1;
			if(a.x<0||a.x>=m||a.y<0||a.y>=n)
				continue;
			if(!visit[a.x][a.y]&&map[a.x][a.y]!='#')
			{
				visit[a.x][a.y]=1;
				if(map[a.x][a.y]=='x')
					a.step++;
				q.push(a);
				
			}
		}
	}
	return 0;
}
int main()
{
	while(scanf("%d %d",&m,&n)!=EOF)
	{
		int i,j;
		for(i=0;i<m;i++)
		{
			scanf("%s",map[i]);
			for(j=0;j<n;j++)
			{
				if(map[i][j]=='a')
				{
					a.x=i;
					a.y=j;
					a.step=0;
				}
			}
		}   
		int step = bfs();
		if(step)
			printf("%d\n",step);
		else
			printf("Poor ANGEL has to stay in the prison all his life.\n");
		
	}
	return 0;
}
记住优先队列的使用

HDU 1242 (BFS+优先队列)

这个题目直接BFS+优先队列;没有其他考虑的,从天使开始搜就行啦!! AC代码: #include #include #include #include using namespace...
  • u010871244
  • u010871244
  • 2013年09月17日 19:52
  • 616

HDU 1242 Rescue(BFS+【优先队列】)

Problem Description Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is...
  • qq_32866009
  • qq_32866009
  • 2016年04月29日 20:42
  • 153

HDU:1242 Rescue(BFS+优先队列)

Rescue Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub...
  • zugofn
  • zugofn
  • 2016年04月08日 17:25
  • 193

HDU 1242:Rescue(BFS+优先队列)

Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is described as a N * M...
  • xp731574722
  • xp731574722
  • 2017年07月31日 20:38
  • 78

HDOJ(1242)BFS+优先队列

Rescue http://acm.hdu.edu.cn/showproblem.php?pid=1242 题意:"#"是墙,"."是路,"a"是要被救的人,"r"是救援者,"x"是guard。每...
  • cy1522055939
  • cy1522055939
  • 2013年08月20日 10:24
  • 356

hdu 1242 Rescue(方法一:BFS+优先队列,方法二:DFS)

原题链接: http://acm.hdu.edu.cn/showproblem.php?pid=1242 题目大意: ‘a’到‘r’所需最少时间。‘#’墙,‘x’花费两个时间,‘.’花费一个...
  • sunshine_YG
  • sunshine_YG
  • 2015年09月26日 01:02
  • 513

hdu 1242 Rescue bfs+优先队列 解题报告

Rescue Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub...
  • qq_21899803
  • qq_21899803
  • 2016年04月04日 21:29
  • 201

HDU 1242 dfs+剪枝或BFS+优先队列 求最短路

Rescue Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S...
  • naipp
  • naipp
  • 2016年07月15日 20:46
  • 102

hdu 1242 畅通工程

Problem  A Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Su...
  • QZC295919009
  • QZC295919009
  • 2013年10月28日 15:13
  • 459

HDU——1242 Rescue(广搜)

Rescue Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub...
  • wuxiushu
  • wuxiushu
  • 2015年09月01日 13:49
  • 184
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu 1242 (bfs+优先队列)
举报原因:
原因补充:

(最多只允许输入30个字)