【Codeforces】C. Ice Cave(bfs)

我了个草,这个题明明bfs不知道谁挂了个dfs+剪枝的标签。。。

从起点bfs一步一步搜,碰到X判断是不是终点,如果是终点就结束,如果为‘.‘,那么把该位置改成X,坐标入队。

#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
#include<iostream>
using namespace std;
const int maxn = 505;
const int dir[4][2] = {{0,1},{1,0},{-1,0},{0,-1}};
char mat[maxn][maxn];
int n,m;
int sx,sy,ex,ey;
bool judge(int x,int y){
    if(x >= 0 && x < n && y >= 0 && y < m)
        return true;
    return false;
}
bool bfs(){
    queue<int>qx,qy;
    qx.push(sx);
    qy.push(sy);
    while(!qx.empty()){
            int x = qx.front(); qx.pop();
            int y = qy.front(); qy.pop();
            for(int i = 0; i < 4; i++){
                    int xx = x + dir[i][0];
                    int yy = y + dir[i][1];
                    if(judge(xx,yy)){
                         if(mat[xx][yy] == 'X'){
                                if(xx == ex && yy == ey)
                                        return true;
                        }
                        else{
                                mat[xx][yy] = 'X';
                                qx.push(xx);
                                qy.push(yy);
                        }
                    }
            }
    }
    return false;
}
int main(){
    scanf("%d%d",&n,&m);
    for(int i = 0; i < n; i++){
        scanf("%s",mat[i]);
    }
    scanf("%d%d%d%d",&sx,&sy,&ex,&ey);
    sx --; sy--;
    ex --; ey--;
    if(bfs())
        printf("YES\n");
    else
        printf("NO\n");
    return 0;
}
时间: 2024-10-27 14:04:08

【Codeforces】C. Ice Cave(bfs)的相关文章

CodeForces 540C Ice Cave (BFS)

http://codeforces.com/problemset/problem/540/C Ice Cave Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Practice CodeForces 540C Description You play a computer game. Your character stands on some level of

【Codeforces】542C - Idempotent functions(思路)

题目大意思: 给定一个数的next值,问最小的k值,使得每次进行k次操作得到的数都是一样的. 将每个位置i记为点i 记circle[i]为从i出发出现环的环内元素,我们的任务就是求这些数的最小公倍数lcm,还要考虑'6'型循环的情况,这个我们只需要求最大的多余长度之后对lcm向上取整就好了 #include<cstdio> #include<stack> #include<cstring> #include<algorithm> using namespac

【转载】夜深人静写算法(四)——差分约束

[转载]夜深人静写算法(四) - 差分约束  目录     一.引例       1.一类不等式组的解   二.最短路       1.Dijkstra       2.图的存储       3.链式前向星       4.Dijkstra + 优先队列       5.Bellman-Ford       6.SPFA       7.Floyd-Warshall   三.差分约束        1.数形结合        2.三角不等式        3.解的存在性        4.最大值

【OpenGL】Shader实例分析(七)- 雪花飘落效果

转发请保持地址:http://blog.csdn.net/stalendp/article/details/40624603 研究了一个雪花飘落效果.感觉挺不错的.分享给大家,效果例如以下: 代码例如以下: Shader "shadertoy/Flakes" { // https://www.shadertoy.com/view/4d2Xzc Properties{ iMouse ("Mouse Pos", Vector) = (100,100,0,0) iChan

【函数】Oracle函数系列(1)--字符函数

[函数]Oracle函数系列(1)--字符函数 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 常见字符函数(lower.upper.initcap.concat.substr.length.intr.lpad.rpad.trim.chr.ascii.replace.translate)的使用 ② 判断字符串中是否含有汉字 ③ substr和instr的联合使用 ④

是男人就下100层【第四层】——Crazy贪吃蛇(2)

在上一篇<是男人就下100层[第四层]--Crazy贪吃蛇(1)>中我们让贪吃蛇移动了起来,接下来我们来实现让贪吃蛇可以绕着手机屏幕边线移动并且可以改变方向 一.添加状态并修改代码 首先我们来用另外一种方式实现上一版本中的刷新界面,在Crazy贪吃蛇(1)中我们自定义了一个线程每隔1s钟刷新界面,在线程中我们使用了postInvalidate()方法通知主线程重绘界面,我们打开View的源代码看看到底是如何通知主线程的,原代码如下: public void postInvalidate(int

洛谷P3379 【模板】最近公共祖先(LCA)

P3379 [模板]最近公共祖先(LCA) 152通过 532提交 题目提供者HansBug 标签 难度普及+/提高 提交  讨论  题解 最新讨论 为什么还是超时.... 倍增怎么70!!题解好像有倍- 题面这个地方写错了 无论是用RMQ+dfs还是tarjan- 为什么我的倍增超时了 求助!为什么只有70分 题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先. 输入输出格式 输入格式: 第一行包含三个正整数N.M.S,分别表示树的结点个数.询问的个数和树根结点的序号. 接

【OpenGL】Shader实例分析(六)- 卡牌特效

转发请保持地址:http://blog.csdn.net/stalendp/article/details/30989295 本文将介绍怎么通过alpha通道来隐藏信息,并实现卡牌特效.运行效果如下: 代码如下: Shader "stalendp/imageShine" { Properties { _MainTex ("image", 2D) = "white" {} _NoiseTex("noise", 2D) = &qu

【雷电】源码分析(三)-- 游戏背景

Android系统手机屏幕的左上角为坐标系,同时y轴方向与笛卡尔坐标系的y轴方向想反.通过提供的api如getLeft , getTop, getBottom, getRight可以获得控件在parent中的相对位置.同时,也可以获得控件在屏幕中的绝对位置,详细用法可参考android应用程序中获取view的位置 当我们编写一些自定义的滑动控件时,会用到一些api如scrollTo(),scrollBy(),getScrollX(), getScrollY().由于常常会对函数getScroll