题意:给出一个n*m的矩阵,“.”代表完整的冰,“X”代表破碎的冰,现在为了前进,需要掉下去一层,唯一的方法就是从破碎的冰上面掉下去

然后给出起点还有终点,问能否可达

即为到达终点的时候,终点必须是破碎的冰,这样才能够保证只掉了一层

然后这个也说明了节点该怎么扩展,如果当前跳到的点是"X"(破碎的冰),且当前点不是终点,那么这个点就不用加入队列了(因为它还没有到达终点就落下去了)

如果当前点是“.”完整的冰,那么跳上去之后,这一点变成破碎的冰"X",再把这一点加入队列,

就这么扩展搜下去

 #include<iostream>
#include<cstdio>
#include<cstring>
#include <cmath>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<algorithm>
using namespace std;
#define foreach(i,c) for (__typeof(c.begin()) i = c.begin(); i != c.end(); ++i) typedef long long LL;
const int INF = (<<)-;
const int mod=;
const int maxn=; char g[][];
int n,m,flag;
int st1,st2,en1,en2;
int dir[][]={,,-,,,,,-}; struct node{
int x,y;
}; void bfs(){
node u;
u.x=st1;u.y=st2;
queue<node> q;
q.push(u); node v;
while(!q.empty()){
u=q.front();q.pop(); for(int i=;i<;i++){
v.x=u.x+dir[i][];
v.y=u.y+dir[i][]; if(v.x==en1&&v.y==en2&&g[v.x][v.y]=='X'){
flag=;
return;
}
if(v.x<||v.x>n||v.y<||v.y>m) continue;
if(g[v.x][v.y]=='X') continue; q.push(v);
g[v.x][v.y]='X';
}
}
} int main(){
scanf("%d %d",&n,&m);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
cin>>g[i][j]; cin>>st1>>st2;
cin>>en1>>en2; flag=;
bfs(); if(flag) printf("YES\n");
else printf("NO\n"); return ;
}

当时做的时候,没有理清楚节点应该怎么扩展,因为根本没有注意只需要落一层,而且因为要到达终点,那下落的一层一定是在终点

哎-----------加油啊 gooooooooooooooooooooooo--------

codeforces 540 C Ice Cave【BFS】的更多相关文章

  1. CodeForces - 580C Kefa and Park 【BFS】

    题目链接 http://codeforces.com/problemset/problem/580/C 题意 根节点是 1 然后所有的叶子结点都是饭店 从根节点到叶子结点的路径上 如果存在 大于m 个 ...

  2. Codeforces 659F Polycarp and Hay【BFS】

    有毒,自从上次选拔赛(哭哭)一个垃圾bfs写错之后,每次写bfs都要WA几发...好吧,其实也就这一次... 小白说的对,还是代码能力不足... 非常不足... 题目链接: http://codefo ...

  3. codeforces 540 B School Marks【贪心】

    题意:一共n个数,给出其中k个数,要求这n个数的中位数为y,这n个数的和不超过x,补全剩下的n-k个数 先统计给出的k个数里面比中位数小的数, 如果cnt<=n/2,说明中位数还没有出现,把这n ...

  4. CodeForces 540C Ice Cave (BFS)

    http://codeforces.com/problemset/problem/540/C       Ice Cave Time Limit:2000MS     Memory Limit:262 ...

  5. [CodeForces - 1225E]Rock Is Push 【dp】【前缀和】

    [CodeForces - 1225E]Rock Is Push [dp][前缀和] 标签:题解 codeforces题解 dp 前缀和 题目描述 Time limit 2000 ms Memory ...

  6. Codeforces 716B Complete the Word【模拟】 (Codeforces Round #372 (Div. 2))

    B. Complete the Word time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  7. 【bfs】抓住那头牛

    [题目] 农夫知道一头牛的位置,想要抓住它.农夫和牛都位于数轴上,农夫起始位于点N(0≤N≤100000),牛位于点K(0≤K≤100000).农夫有两种移动方式: 1.从X移动到X-1或X+1,每次 ...

  8. 【bfs】拯救少林神棍(poj1011)

    Description 乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位.然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度.请你 ...

  9. 【bfs】Knight Moves

    [题目描述] 输入nn代表有个n×nn×n的棋盘,输入开始位置的坐标和结束位置的坐标,问一个骑士朝棋盘的八个方向走马字步,从开始坐标到结束坐标可以经过多少步. [输入] 首先输入一个nn,表示测试样例 ...

随机推荐

  1. ThinkPHP5.0框架开发--第10章 TP5.0验证器

    ThinkPHP5.0框架开发--第10章 TP5.0验证器 第10章 TP5.0验证器 ======================================= 今日学习 1.验证器 1) 控 ...

  2. [jzoj NOIP2018模拟10.29]

    OI生涯的最高分,来了纪中这么多天,在经历了这么多场“NOIP难度”的模拟赛之后,终于看到了真正的NOIP 今天考场上效率很高,很快码完了全部的题目,留下了足够的时间对拍和...发呆.不得不说看着电脑 ...

  3. MFC补码原码反码转换工具

    /*_TCHAR str[100] = { 0 }; wsprintf(str, _T("%d"),num);*/ ; CString str; m_edit1.GetWindow ...

  4. JavaScript实现记住密码功能

    用js实现记住密码功能,但是前端记住密码不安全,最好还是不要用.我感觉这个记住密码应该是通过与后台建立一个会话来实现. 这个效果的测试地址在:http://ofoyou.com/blog/rePass ...

  5. 你不知道的JavaScript(八)逻辑运算

    JS的逻辑运算结果和其他一些强类型语言差别比较大,也比较容易让人产生困惑,看下面的例子: <script type="text/javascript"> var a = ...

  6. 贰、js的基础(三)数组

    JS中数组的操作 1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长 ...

  7. .NET Framework 3.5 无法安装以下功能 安装错误:0x800F0906(客户端加域后出现)

    问题:安装错误:0x800F0906    系统安装并加域后,在安装用友软件时提示没有.net 3.5 系统为win10 但是,点击确定后,却出现了这样的错误.如下: 点击下载并安装此功能,出现了这样 ...

  8. C# AES 加解密处理

    引言 这是一个有关AES加解密的方法类 一.设置AES加解密密钥:下面列出自己分配的三类密钥 private const string UserKey = "roshan-2015-user ...

  9. 原生ajax实现文件上传

    视图层 JS 函数:    <input type="file" onchange="sendFile()" id="up" /> ...

  10. echars 在vue v-if 切换会 显示不出来或者显示出来但是不是百分百显示

    我也是百度看别人写的原因,然后自己总结,以后用到的时候来复制就可以将  v-if换成 v-show 第二不是百分百显示  可以用 this.$nextTick(function() { this.in ...