hdu 2102 A计划 bfs

Windows环境下IBSIMU的安装 本文主要介绍离子束仿真程序IBSIMU在Windows环境下的安装。 阅读详情

题意:中文题目,容易看懂,之前把题意给理解错了,认为走进传输机可以选择传送或是不传送,看了题解才知道没得选,走进去就相当于传输,如果上下两层都是时空传输机,或是传送的目的地是墙壁,则不能走进传输机,前者会造成无限传送,后者会撞死。所以要禁止这种情况,将它们视作墙壁即可。

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102

#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int maxn = 20;
char map[2*maxn][2*maxn];
int d[2*maxn][2*maxn];
int Move[] = {0,1,0,-1,0}; //x,y+1 x+1,y x,y-1  x-1,y
int n,m;
struct node
{
	int i,j;
	node(int i,int j):i(i),j(j){
	}
};
bool check(int i,int j)
{
	return i>=0&&i<=2*n&&j>=0&&j<m;
}
void bfs(int ei,int ej)
{
	queue<node> q;
	q.push(node(0,0));
	d[0][0]=0;
	while(!q.empty())
	{
		int sz = q.size();
		while(sz--)
		{
			node a = q.front();q.pop();
			int di,dj;
			di = a.i;dj = a.j;
			if(map[di][dj]=='P')return;
		//	printf("%d %d\n",di,dj);
			for(int i=0;i<4;i++)
			{
				int ci,cj;
				ci = di+Move[i];
				cj = dj+Move[i+1];
				if(check(ci,cj)&&d[ci][cj]==-1&&(map[ci][cj]=='.'||map[ci][cj]=='P'))
				{
					d[ci][cj]=d[di][dj]+1;
					q.push(node(ci,cj));
				}
				else if(check(ci,cj)&&ci<n&&d[ci+n+1][cj]==-1&&map[ci][cj]=='#')
				{
					d[ci+n+1][cj]=d[di][dj]+1;
					d[ci][cj]=d[di][dj]+1;
					q.push(node(ci+n+1,cj));
				}
				else if(check(ci,cj)&&ci>=n+1&&d[ci-n-1][cj]==-1&&map[ci][cj]=='#')
				{
					d[ci-n-1][cj]=d[di][dj]+1;
					d[ci][cj]=d[di][dj]+1;
					q.push(node(ci-n-1,cj));
				}
			}
		}
	}
}
int main()
{
	int T,c;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d%d%d",&n,&m,&c);
		int i,j,ei,ej;
		i=j=0;
		memset(d,-1,sizeof(d));
		memset(map,0,sizeof(map));
		getchar();
		for(i=0;i<n;i++)
		{
			for(j=0;j<m;j++)
			{
				scanf("%c",&map[i][j]);
				if(map[i][j]=='P')
				{
					ei=i;
					ej=j;
				}
			}
			
			getchar();
		}
		for(i=n+1;i<=2*n;i++)//第n行隔开 
		{
			getchar();
			for(j=0;j<m;j++)
			{
				scanf("%c",&map[i][j]);
				if(map[i][j]=='P')
				{
					ei=i;
					ej=j;
				}
			}
		}
		
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<m;j++)
			if(map[i][j]=='#'&&map[i+n+1][j]=='#')
			{
				map[i][j]=map[i+n+1][j]='*';
			}
			else if(map[i][j]=='#'&&map[i+n+1][j]=='*')
			map[i][j]='*';
			else if(map[i+n+1][j]=='#'&&map[i][j]=='*')
			map[i+n+1][j]='*';
		}
		
		bfs(ei,ej);		
		
		if(d[ei][ej]<=c&&d[ei][ej]!=-1)
		printf("YES\n");
		else
		printf("NO\n");
		
	}
} 

黑猫带你学eMMC协议第1篇:全网最全emmc协议中文详讲,这份学习框架图,你值得拥有!!!(持续更新中...) 黑猫带你学eMMC协议第7篇:全网最全emmc写保护详解(write protect) 黑猫带你学eMMC协议第8篇:emmc可靠写详解(Write Reliability) 黑猫带你学eMMC协议第9篇:emmc的分区配置(partitioning) 黑猫带你学eMMC协议第10篇:eMMC命令队列详解(CMDQ) 黑猫带你学eMMC协议第11篇:eMMC擦除详解(erase/trim/discard/sanitize/secure erase/secure trim…) 黑猫带你学eMMC协议第12篇: 阅读详情

相关推荐

科技中介如何高效匹配技术供需?.docx

科技中介如何高效匹配技术供需?

HDU 2102 A计划(两层地图的bfs

传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2102 A计划 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 28972    Accepted Submission(s): 72...

Y先森0.0 209

AI创作5000字民间故事小说指令【指令+教程】.zip

AI创作5000字民间故事小说指令【指令+教程】

hdu2102A计划(bfs)

hdu2102A计划 A计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 33348 Accepted Submission(s): 8254 Problem Description 可怜的公主在一次次被魔王掳走一次次被骑士们救...

IDrandom的专栏 237

HDU-2102 A计划BFS)详解

HDU-2102 A计划BFS)详解

qwertf123的博客 1000

HDU2102:A计划BFS

HDU2012:A计划 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验。魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的肉也能长生不老。年迈的国王正是心急如焚,告招天下勇士来拯救公主。不过公主早已习以为常,她深信智勇的骑士LJ肯定能将她救出。

Kaidge的博客 359

HDU 2102 A计划 BFS

/* --------------------------------------------------- ACMer : johnsondu Time : 21:20 - 21:55, 2012.2.12 stratege : easy BFS *************************************************** P

小do在努力 873

HDU2102 A计划 —— BFS

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102 A计划 Time Limit: 3000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 24298Accepted Su...

weixin_30375247的博客 69

hdu 2102 A计划bfs

传送门:hdu2102 题意中能够在T时刻找到公主就是T时刻以内找到公主,因为打不了你可以在一个格子里多呆几秒嘛。。 典型广搜,book数组和入队条件稍微改动一下即可。#include #include #include #include using namespace std; int n,m,T; int ef,er,ec; int go[4][2]={0,1,1,0,0,-1,-

WA是一笔财富 321

HDU 2102 A计划 BFS求解

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102 题意简单,救公主,但是许多细节需要处理,看着数据比较小,又不是求最小时间量,第一反应就是DFS,因为DFS的代码量一般比较小,可惜TLE了,技术不够啊! 1,当两边都是#时,不能过去,当对面是*时,不能过去 2,不能认为只有这边是#,对面是 . 是才能过去,因为存在对面为P是的特殊

catch_catch的专栏 527

HDU - 2102 A计划BFS

题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2102 思路 题目有两个坑点 0.Output 说 能在T时刻 找到公主 就输出 YES 但实际上 只要在T时刻或者T时刻之前找到就可以了 1.如果传输机另一边 是 墙 那么就会被撞死 那如果另一边也是传输机 那么也是就会传来传去 也是行不通的 ...

banshen0201的博客 103

hdu 2102 A计划 BFS

思路:BFS坑点:传送门必须是’P’或者’.’才可以过去,否则都是死。 http://acm.hdu.edu.cn/showproblem.php?pid=2102 /* Problem : hdu 2102 Author : NMfloat InkTime (c) NM . All Rights Reserved . */#include <map> #include

NM的专栏 544

hdu2102 A计划BFS

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102 题意:中文题 解析:很简单的bfs,但是题目有个很奇葩的设定,那个时光机,你踩上去一定会传到另一层,那么如果你的另一边也是时光机的话,那你就拉闸了,这种情况确实很无语,注意下这个坑点,其他都跟普通的走迷宫没区别#include <bits/stdc++.h> using namespace s

22h's Blog 405

HDU2102 A计划 BFS

A计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 32420 Accepted Submission(s): 8042 Problem Description 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的...

DouglasConnor的博客 226

HDU2102 A计划 BFS简化版

Description 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验。魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的肉也能长生不老。年迈的国王正是心急如焚,告招天下勇士来拯救公主。不过公主早已习以为常,她深信智勇的骑士LJ肯定能将她救出。 现据密探所报,公主被关在一个两层的迷宫里,迷宫的入口是S(0,0,0),公主的位置用P表示,时空传...

超逸の学习技术博客 559

HDU - 2102 A计划BFS

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102 有两个要注意的地方 1,走到传送门是强制传送的。 2,如果传送到另一层又是一个传送门,会死循环,直接排除掉这个点。 #include &lt;iostream&gt; #include &lt;queue&gt; #include &lt;cstring&gt; #include &l...

Y390d的博客 161

HDU 2102 A计划(简单3维BFS

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102

scf0920 1093

HDU2102 A计划BFS

  A计划   Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 25923    Accepted Submission(s): 6513     Problem Description 可怜的公主在一次次被魔王掳走一次次被...

海岛Blog 1816
上一篇: hdu 1232 Rescue 简单bfs
下一篇: hdu 1253 胜利大逃亡 简单bfs
chen_minghui
博客等级 码龄10年 19粉丝 349原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值