hdu 1728 bfs **
简单bfs,记录好状态即可
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<map>
using namespace std;
#define MOD 1000000007
const int INF=0x3f3f3f3f;
const double eps=1e-;
typedef long long ll;
#define cl(a) memset(a,0,sizeof(a))
#define ts printf("*****\n");
const int MAXN=;
int n,m,tt,k;
int dir[][]={,,-,,,,,-};
char s[MAXN][MAXN];
struct Node
{
int x,y;
int st;
int t;
}node[MAXN],st,ed;
bool vis[MAXN][MAXN][][];
bool bfs()
{
queue<Node> q;
cl(vis);
Node now,next;
st.t=;
st.st=;
vis[st.x][st.y][st.st][st.t]=;
q.push(st);
st.st=;
vis[st.x][st.y][st.st][st.t]=;
q.push(st);
st.st=;
vis[st.x][st.y][st.st][st.t]=;
q.push(st);
st.st=;
vis[st.x][st.y][st.st][st.t]=;
q.push(st);
while(!q.empty())
{
now=q.front();
q.pop();
if(now.x==ed.x&&now.y==ed.y)
{
return ;
}
for(int i=;i<;i++)
{
next.x=now.x+dir[i][];
next.y=now.y+dir[i][];
next.t=now.t;
next.st=i;
if(i!=now.st) next.t+=,next.st=i;
if(next.x>=&&next.x<n&&next.y>=&&next.y<m&&!vis[next.x][next.y][i][next.t]&&s[next.x][next.y]!='*'&&next.t<=k)
{
if(now.st==i)
{
q.push(next);
vis[next.x][next.y][i][next.t]=;
}
else
{
q.push(next);
vis[next.x][next.y][i][next.t]=;
}
}
}
}
return ;
}
int main()
{
int i,j;
#ifndef ONLINE_JUDGE
freopen("1.in","r",stdin);
#endif
scanf("%d",&tt);
while(tt--)
{
scanf("%d%d",&n,&m);
for(i=;i<n;i++)
{
scanf("%s",&s[i]);
}
scanf("%d%d%d%d%d",&k,&st.y,&st.x,&ed.y,&ed.x);
st.x-=;
st.y-=;
ed.x-=;
ed.y-=;
if(bfs())
{
printf("yes\n");
}
else printf("no\n");
}
}
hdu 1728 bfs **的更多相关文章
- 逃离迷宫(HDU 1728 BFS)
		
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
 - HDU 1728 逃离迷宫
		
[题目描述 - Problem Description] 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,glo ...
 - hdu 1728
		
//hdu 1728 //这个是一道很经典的迷宫题了,思路感觉...取起点和终点,判断连线是否超过n个弯, //先是从起点出发,上下左右四个方向搜索,找到一条路,把那条路的第一个点压入队列 //然后沿 ...
 - hdu 4531 bfs(略难)
		
题目链接:点我 第一次不太清楚怎么判重,现在懂了,等下次再做 /* *HDU 4531 *BFS *注意判重 */ #include <stdio.h> #include <stri ...
 - HDU 1728:逃离迷宫(BFS)
		
http://acm.hdu.edu.cn/showproblem.php?pid=1728 逃离迷宫 Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有 ...
 - hdu - 1728逃离迷宫 && hdu - 1175 连连看 (普通bfs)
		
http://acm.hdu.edu.cn/showproblem.php?pid=1728 这两道题花了一下午的时候调试,因为以前做过类似的题,但是判断方向的方法是错的,一直没发现啊,真无语. 每个 ...
 - hdu 1728 逃离迷宫 bfs记转向
		
题链:http://acm.hdu.edu.cn/showproblem.php?pid=1728 逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Mem ...
 - HDU - 1728 逃离迷宫  【BFS】
		
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1728 思路 BFS 一开始 从开始位置 往四周走 如果能走的话 这个时候 转弯次数都是0 我们的标记不 ...
 - hdu 1728 逃离迷宫 bfs记步数
		
题链:http://acm.hdu.edu.cn/showproblem.php?pid=1728 逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Mem ...
 
随机推荐
- Python序列的切片操作与技巧
			
切片操作 对于具有序列结构的数据来说,切片操作的方法是:consequence[start_index: end_index: step]. start_index: 表示是第一个元素对象,正索引位置 ...
 - 常用 SQL 语句
			
一.SQL中新增列或者说添加字段的语法: alter table 表名 add 列名 数据类型 二.例如:在表texttable中添加一列字符型字段colnew: alter table textta ...
 - 织梦DedeCMS删除所有栏目或文章后,新建ID不从1开始的解决方法
			
这个修改方法很简单,从模板无忧那里找到的,只需要在后台系统-SQL命令行工具里面运行以下语句即可,不用采用笨方法重新安装织梦CMS了. 删除所有栏目,新建ID从1开始: ALTER TABLE `de ...
 - Unity教程之再谈Unity中的优化技术
			
这是从 Unity教程之再谈Unity中的优化技术 这篇文章里提取出来的一部分,这篇文章让我学到了挺多可能我应该知道却还没知道的知识,写的挺好的 优化几何体 这一步主要是为了针对性能瓶颈中的”顶点 ...
 - mysql 视图(view)
			
什么是视图 视图是从一个或多个表中导出来的表,是一种虚拟存在的表. 视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据. 这样,用户可以不用看到整个数据库中的数据,而之关心对自己有用的数据. 数 ...
 - 什么是RST包,什么是三次握手,什么是四次握手 ---请进
			
一.RST包.本人学习后总结:RST包用于强制关闭TCP链接. TCP连接关闭的正常方法是四次握手.但四次握手不是关闭TCP连接的唯一方法. 有时,如果主机需要尽快关闭连接(或连接超时,端口或主机不可 ...
 - linux 的终端字体色和背景色的修改方法(一)
			
更改Linux系统终端的颜色主题 随着Linux系统在服务器端的崛起,Linux也在慢慢进军个人桌面系统领域.如果在使用Linux系统的终端时,对其颜色主题不是很满意,该怎么修改颜色的主题呢?今天笔者 ...
 - GTP V0 和 GTP V1
			
GTP概述 GTP(GPRS Tunnelling Protocol)协议应用在SGSN 和GGSN 之间,为各个移动台(MS) 建立GTP 通道,GTP 通道是 GPRS服务节点(GSN) 之间的安 ...
 - Ubuntu如何安装secureCRT
			
以前在ubuntu上安装过secureCRT,是自己按照网上的教程安装的. 电脑重装了系统之后,想在电脑上安装一个,又得去网上搜,安装完后,自己总结了一下. 1,下载secureCRT包 根据自己电脑 ...
 - ruby  Errors & Exceptions
			
When you first started coding, errors were probably the last thing you wanted to see. After all, it’ ...