HDU2216:Game III(BFS)
Game III
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 31 Accepted Submission(s) : 11
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Now give you the map , you shold find out the minimum steps, Zjt have to move. We say Zjt meet Sara, if they are in the same position or they are adjacent .
Zjt can only move to a empty position int four diraction (up, left, right, down). At the same time, Sara will move to a position in opposite direction, if there is empty. Otherwise , she will not move to any position.
The map is a N*M two-dimensional array. The position Zjt stays now is marked Z, and the position, where Sara stays, is marked E.
> . : empty position
> X: the wall
> Z: the position Zjt now stay
> S: the position Sara now stay
Your task is to find out the minimum steps they meet each other.
Input
Output
Sample Input
4 4
XXXX
.Z..
.XS.
XXXX
4 4
XXXX
.Z..
.X.S
XXXX
4 4
XXXX
.ZX.
.XS.
XXXX
Sample Output
1
1
Bad Luck!
#include <iostream>
#include <cstdio>
#include<cmath>
#include<queue>
#include<cstring>
using namespace std;
struct node
{
int x,y,u,v,ti;
node(int a,int b,int c,int d,int e){x=a;y=b;u=c;v=d;ti=e;}
};
int n,m,i,j,sx,sy,tx,ty,ans;
char mp[][];
int vis[][][][]; //标记走过否
int dr[][]={{,},{,-},{-,},{,} }; bool check(int x,int y)
{
if (x>= && x<n && y>= && y<m && mp[x][y]!='X') return ;
return ;
}
void bfs()
{
queue<node>Q;
vis[sx][sy][tx][ty]=;
Q.push(node(sx,sy,tx,ty,));
while(!Q.empty())
{
node p=Q.front();
Q.pop();
if (abs(p.x-p.u)+abs(p.y-p.v)<=) { ans=p.ti; return; }
for(i=;i<;i++)
{
int xx=p.x+dr[i][];
int yy=p.y+dr[i][];
int uu=p.u-dr[i][];
int vv=p.v-dr[i][];
if (check(xx,yy))
{
if (!check(uu,vv))
{
uu=p.u;
vv=p.v;
}
if (!vis[xx][yy][uu][vv])
{
vis[xx][yy][uu][vv]=;
Q.push(node(xx,yy,uu,vv,p.ti+));
}
}
}
}
return;
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
for(i=;i<n;i++)
{
scanf("%s",&mp[i]);
for(j=;j<m;j++)
{
if (mp[i][j]=='Z') sx=i,sy=j;
if (mp[i][j]=='S') tx=i,ty=j;
}
}
ans=-;
memset(vis,,sizeof(vis));
bfs();
if (ans==-) printf("Bad Luck!\n");
else printf("%d\n",ans);
}
return ;
}
HDU2216:Game III(BFS)的更多相关文章
- HDU 2216 Game III(BFS)
Game III Problem Description Zjt and Sara will take part in a game, named Game III. Zjt and Sara wil ...
- UVA 1672不相交的正规表达式
题意 输入两个正规表达式,判断两者是否相交(即存在一个串同时满足两个正规表达式).本题的正规表达式包含如下几种情况: 单个小写字符 $c$ 或:($P | Q$). 如果字符串 $s$ 满足 $P$ ...
- hdu - 2216 Game III && xtu 1187 Double Maze (两个点的普通bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=2216 zjt和sara在同一个地图里,zjt要去寻找sara,zjt每移动一步sara就要往相反方向移动,如果他 ...
- 337. House Robber III——树的题目几乎都是BFS、DFS,要么递归要么循环
The thief has found himself a new place for his thievery again. There is only one entrance to this a ...
- 模板 树链剖分BFS版本
//点和线段树都从1开始 //边使用vector vector<int> G[maxn]; ],num[maxn],iii[maxn],b[maxn],a[maxn],top[maxn], ...
- zoj 1649 Rescue (BFS)(转载)
又是类似骑士拯救公主,不过这个是朋友拯救天使的故事... 不同的是,天使有多个朋友,而骑士一般单枪匹马比较帅~ 求到达天使的最短时间,杀死一个护卫1 units time , 走一个格子 1 unit ...
- [Locked] Strobogrammatic Number & Strobogrammatic Number II & Strobogrammatic Number III
Strobogrammatic Number A strobogrammatic number is a number that looks the same when rotated 180 deg ...
- HDU 3277 Marriage Match III(二分+最大流)
HDU 3277 Marriage Match III 题目链接 题意:n个女孩n个男孩,每一个女孩能够和一些男孩配对,此外还能够和k个随意的男孩配对.然后有些女孩是朋友,满足这个朋友圈里面的人.假设 ...
- 2016级算法期末上机-H.难题·AlvinZH's Fight with DDLs III
1119 AlvinZH's Fight with DDLs III 思路 难题,最小点覆盖. 分析题意,某一个任务,既可以在笔记本A的 \(a\) 模式下完成,也可以在笔记本B的 \(b\) 模式下 ...
随机推荐
- linux下合并pdf
使用Gost Script和 PDFtk运行如下命令: #gs -q -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=Linuxidc.pdf -dBATCH *.p ...
- 解决MySQL 在 Java 检索遇到timestamp空值时报异常的问题
使用JDBC检索MySQL数据库,如果遇到timestamp字段的值为空,那么会立即报出异常: ### Error querying database. Cause: java.sql.SQLExc ...
- MvcPager
站点网址:http://www.webdiyer.com/mvcpager/ 控制台命令:Install-Package Webdiyer.MvcPager
- weblogic一些基本概念
<收藏过来的----------http://www.cnblogs.com/cocowool/archive/2012/04/01/2428861.html> WebLogic中的一些基 ...
- Time complexity of ArrayList in Java
The size, isEmpty, get, set, iterator, and listIterator operations run in constant time. The add ope ...
- ios用xib实现三等分以及多等分思路
Auto Layout 的本质原理 Auto Layout 的本质是用一些约束条件对元素进行约束,从而让他们显示在我们想让他们显示的地方. 约束主要分为以下几种(欢迎补充): 相对于父 view 的约 ...
- jQuery实现 图片的局部放大效果
<html xmlns="http://www.w3.org/1999/xhtml"><head> <title></title> ...
- 第三十节,正则表达式re模块
正则表达式 正则表达式本身是一种小型的.高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序员们可以直接调用来实现正则匹配.正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引 ...
- HDU2502:月之数
Problem Description 当寒月还在读大一的时候,他在一本武林秘籍中(据后来考证,估计是计算机基础,狂汗-ing),发现了神奇的二进制数. 如果一个正整数m表示成二进制,它的位数为n(不 ...
- http GET
向php脚本中传参数可以用http GET 方法,比如要向file.php传两个参数v1和v2.则可以这么做 file.php?v1=&v2= (一个链接而已,直接编辑URL即可传参数了) 这 ...