//为什么bfs不行呢,想不通

#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
#define maxn 10
int buf[maxn][maxn],vis[maxn][maxn]={false};
int n,m,t;
struct node
{
int x,y;
};
node st,ed;
int movx[4]={0,0,1,-1};
int movy[4]={1,-1,0,0};
int check(int x,int y)
{
if(x<0||x>=n)return 0;
else if(y<0||y>=m)return 0;
else if(buf[x][y]==-1)return 0;
else if (vis[x][y]==true)return 0;
return 1;
}
void bfs_traverse(node s)
{
queue < node >q;
q.push(s);
vis[s.x][s.y]=true;
while(!q.empty())
{
node tmp=q.front();q.pop();
vis[tmp.x][tmp.y]=true;
if(tmp.x==ed.x&&tmp.y==ed.y)return ;
for(int i=0;i<4;i++)
{
int x=tmp.x+movx[i],y=tmp.y+movy[i];
if(check(x,y))
{
node s;
s.x=x;s.y=y;
if(vis[x][y]==false)
{
buf[x][y]=buf[tmp.x][tmp.y]+1;
vis[x][y]=true;
}
q.push(s);
}
}
}
}
int main()
{
freopen("input.txt","r",stdin);
while(scanf("%d%d%d",&n,&m,&t)!=EOF)
{
getchar();
memset(buf,0,sizeof(buf));
memset(vis,false,sizeof(vis));
if(!n&&!m&&!t)break;
int i,j;
char c;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%c",&c);
if(c=='S')
{
st.x=i;
st.y=j;
}
else if(c=='D')
{
ed.x=i;
ed.y=j;
}
else if(c=='X')buf[i][j]=-1;
}
getchar();
}
bfs_traverse(st);

if(buf[ed.x][ed.y]==t)printf("YES\n");
else printf("NO\n");
}
return 0;
}

HDOJ1010(BFS)的更多相关文章

  1. 图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)

    图的遍历的定义: 从图的某个顶点出发访问遍图中所有顶点,且每个顶点仅被访问一次.(连通图与非连通图) 深度优先遍历(DFS): 1.访问指定的起始顶点: 2.若当前访问的顶点的邻接顶点有未被访问的,则 ...

  2. 【BZOJ-1656】The Grove 树木 BFS + 射线法

    1656: [Usaco2006 Jan] The Grove 树木 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 186  Solved: 118[Su ...

  3. POJ 3278 Catch That Cow(bfs)

    传送门 Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 80273   Accepted: 25 ...

  4. POJ 2251 Dungeon Master(3D迷宫 bfs)

    传送门 Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 28416   Accepted: 11 ...

  5. Sicily 1215: 脱离地牢(BFS)

    这道题按照题意直接BFS即可,主要要注意题意中的相遇是指两种情况:一种是同时到达同一格子,另一种是在移动时相遇,如Paris在(1,2),而Helen在(1,2),若下一步Paris到达(1,1),而 ...

  6. Sicily 1048: Inverso(BFS)

    题意是给出一个3*3的黑白网格,每点击其中一格就会使某些格子的颜色发生转变,求达到目标状态网格的操作.可用BFS搜索解答,用vector储存每次的操作 #include<bits/stdc++. ...

  7. Sicily 1444: Prime Path(BFS)

    题意为给出两个四位素数A.B,每次只能对A的某一位数字进行修改,使它成为另一个四位的素数,问最少经过多少操作,能使A变到B.可以直接进行BFS搜索 #include<bits/stdc++.h& ...

  8. Sicily 1051: 魔板(BFS+排重)

    相对1150题来说,这道题的N可能超过10,所以需要进行排重,即相同状态的魔板不要重复压倒队列里,这里我用map储存操作过的状态,也可以用康托编码来储存状态,这样时间缩短为0.03秒.关于康托展开可以 ...

  9. Sicily 1150: 简单魔板(BFS)

    此题可以使用BFS进行解答,使用8位的十进制数来储存魔板的状态,用BFS进行搜索即可 #include <bits/stdc++.h> using namespace std; int o ...

随机推荐

  1. GL_GL系列 - 日记账处理管理分析(案例)

    2014-07-07 Created By BaoXinjian

  2. [物理学与PDEs]第5章习题参考解答

    [物理学与PDEs]第5章习题1 矩阵的极分解 [物理学与PDEs]第5章习题2 Jacobian 的物质导数 [物理学与PDEs]第5章习题3 第二 Piola 应力张量的对称性 [物理学与PDEs ...

  3. 30天轻松学习javaweb_tomcat的虚拟目录设置

    1.在server.xml文件的</Host>前面加入.需要重新启动Tomcat才能生效.<!--配置虚拟目录--><Context path="/itcast ...

  4. EF下CodeFirst、DBFirst与ModelFirst分析

    EF4.1有三种方式来进行数据操作及持久化.分别是Database-First,Model-First,Code-first:1.Database First是基于已存在的数据库,利用某些工具(如Vs ...

  5. [ActionScript 3.0] AS3.0 马赛克效果

    var bmpd:BitmapData; var matrix:Matrix; var bmp:Bitmap; var size:Number = 5; /** * @author:Frost.Yen ...

  6. JAVA中集合类的使用

    总的说来常用的集合类有两大类:Collection 和 Map 1) Collection接口有List和Set两大类子接口,List有ArrayList.LinkedList.Vector子类,Se ...

  7. javascript delete方法

    学习delete可以参考下面两个博客,写的都很好,本文大部分参考与以下两个博客 http://www.cnblogs.com/windows7/archive/2010/03/28/1698387.h ...

  8. OpenCV数据结构:CvMat,IplImage,CvArr的应用

    最近看HS算法时,发现在新的OpenCV3.0已经移除了该算法,于是不得不看老版的.这其中涉及到了CvMat,CvArr,IplImage的使用.关于这三个结构与Mat的转换关系,总结如下: (1)派 ...

  9. Bootstrap栅格系统

    栅格系统分为两种:默认栅格系统 row,流式栅格系统 row-fluid. row 默认栅格系统:即指定了每个栅格的宽度为60px,间距为20px.共有12个栅格.总宽度为940px; 即12个栅格= ...

  10. hbase的rowkey简单设计

    问题: 需要查询某一用户某时间做了什么,PlatID和vopenid可以保证一个用户唯一,但同一时间同一用户可能日志有多条. 使用PlatID(int).vopenid(int)和dtTime(dat ...