P1363 幻想迷宫

显然,若从原图中起点走到相邻的图中对应的“起点”位置 ,就可以无限走下去,

若一个点从原图中可以到达,到了非原图中也可以到达,就可以无限走下去

我们不妨记录下当前到达的x,y坐标,同时也记录下在%n,%m下的坐标,

int vis[x][y][3]; x,y表示在%n,%m下的坐标,vis[x][y][1]表示是否到达过x’%n=x,y’%n=y的x’,y’

vis[x][y][1]记录x',vis[x][y][2]记录y',若第二次经过时实际坐标不同,则可以无限走下去

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define N 1520
#define reset(a) memset(a,0,sizeof(a))
int n,m,que[N*N*2][4],head,tail,vis[N][N][3];
int dx[5]={0,-1,1,0,0},dy[5]={0,0,0,-1,1};
bool map[N][N],flag;
int main(){
while(cin>>n){
cin>>m; flag=0;
reset(map); reset(vis);
head=tail=0;
char c=getchar();
for(int i=1;i<=n;i++){
while(c!='.'&&c!='#'&&c!='S')
c=getchar();
for(int j=1;j<=m;j++){
if(c=='S'){
map[i][j]=1;
vis[i][j][0]=1;
vis[i][j][1]=i;
vis[i][j][2]=j;
que[++tail][0]=i;
que[tail][1]=j;
que[tail][2]=i;
que[tail][3]=j;
}
else if(c=='.')
map[i][j]=1;
c=getchar();
}
}
while(head<tail){
int x1=que[++head][0];
int y1=que[head][1];
int x2=que[head][2];
int y2=que[head][3];
for(int i=1;i<=4;i++){
int nx2=x2+dx[i];
int ny2=y2+dy[i];
int nx1=(x1+dx[i]+n-1)%n+1;
int ny1=(y1+dy[i]+m-1)%m+1;
if(!map[nx1][ny1]) continue;
if(vis[nx1][ny1][0]){
if(vis[nx1][ny1][1]==nx2)
if(vis[nx1][ny1][2]==ny2)
continue;
{flag=1; break;}
}
if(flag) break;
vis[nx1][ny1][0]=1;
vis[nx1][ny1][1]=nx2;
vis[nx1][ny1][2]=ny2;
que[++tail][0]=nx1;
que[tail][1]=ny1;
que[tail][2]=nx2;
que[tail][3]=ny2;
}
if(flag) break;
}
if(flag) puts("Yes");
else puts("No");
}
return 0;
}

【洛谷P1363】幻象迷宫的更多相关文章

  1. 洛谷 P1363 幻想迷宫 解题报告

    P1363 幻想迷宫 题目描述 背景 Background (喵星人LHX和WD同心协力击退了汪星人的入侵,不幸的是,汪星人撤退之前给它们制造了一片幻象迷宫.) WD:呜呜,肿么办啊-- LHX:mo ...

  2. 洛谷P1363 幻想迷宫

    题目描述 背景 Background (喵星人LHX和WD同心协力击退了汪星人的入侵,不幸的是,汪星人撤退之前给它们制造了一片幻象迷宫.) WD:呜呜,肿么办啊…… LHX:momo...我们一定能走 ...

  3. 洛谷 P1363 幻想迷宫

    题目描述 背景 Background (喵星人LHX和WD同心协力击退了汪星人的入侵,不幸的是,汪星人撤退之前给它们制造了一片幻象迷宫.) WD:呜呜,肿么办啊…… LHX:momo...我们一定能走 ...

  4. 洛谷1363 幻象迷宫dfs

    题目网址:https://www.luogu.com.cn/problem/P1363 迷宫是无限多块地图拼接而成的,问是否可以在迷宫中走无限远.解决方案是dfs,走出初始地图之后的位置映射到原位置( ...

  5. 洛谷P1363 幻想迷宫【dfs】

    题目:https://www.luogu.org/problemnew/show/P1363 题意: 有一个地图,起点是S,障碍物用#表示.可以将这个地图不断的在四周重复,问从起点开始是否可以走到无限 ...

  6. 伪题解 洛谷 P1363 幻想迷宫(DFS)

    毒瘤题,做了一晚上抄题解A了 因为是抄题解,我也不好意思说什么了,就发篇博客纪念一下吧 #include<iostream> #include<cstring> #includ ...

  7. 2021.08.16 P1363 幻象迷宫(dfs,我感受到了出题人浓浓的恶意)

    2021.08.16 P1363 幻象迷宫(dfs,我感受到了出题人浓浓的恶意) P1363 幻象迷宫 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 幻象迷宫可以认为是无限 ...

  8. 洛谷P1238 走迷宫

    洛谷1238 走迷宫 题目描述 有一个m*n格的迷宫(表示有m行.n列),其中有可走的也有不可走的,如果用1表示可以走,0表示不可以走,文件读入这m*n个数据和起始点.结束点(起始点和结束点都是用两个 ...

  9. 络谷 P1363 幻想迷宫

    P1363 幻想迷宫 题目描述 背景 Background (喵星人LHX和WD同心协力击退了汪星人的入侵,不幸的是,汪星人撤退之前给它们制造了一片幻象迷宫.) WD:呜呜,肿么办啊…… LHX:mo ...

随机推荐

  1. Oracle使用sys登录时报错ORA-28009解决方法

    情况一:使用sqlplus登录: 正常输入用户名的口令,就会报错,因为SYS是在数据库之外的超级管理员,所以我们在登录的时候 要在输入口令:口令+as sysdba(比如:123456 as sysd ...

  2. c# 跨平台ide JetBrains Rider

    https://www.jetbrains.com/rider/ et框架 调试hotfix用的,说是vs调试容易崩溃 破解方法 https://zhile.io/2018/08/18/jetbrai ...

  3. java.lang.Exception: DEBUG -- CLOSE BY CLIENT STACK TRACE 的理解

    [2013-12-06 11:06:21,715] [C3P0PooledConnectionPoolManager[identityToken->2tl0n98y1iwg7cbdzzq7a|7 ...

  4. ArrayList  集合

    ArrayList       集合:很多数据的一个集合       数组:长度不可变.类型单一 集合的好处:长度可以任意改变  类型随便 集合长度都的问题   很多数据的集合数组类型不可变 长度单一 ...

  5. 将代码托管到github,并生成链接访问

    转眼间加入github的阵营已经两年多了,看到别人建立的个人博客挺好看的,因此,自己从此喜欢上了github,总结下自己的相关知识. 推荐学习Git的网址: 猴子都能懂的GIT入门 http://ba ...

  6. vue——计算属性和侦听器

    一.计算属性(data中的相关数据) 侦听多个属性时——计算属性 comuted. 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: & ...

  7. scss-声明变量与引用

    一.变量的声明 使用$符号可以标识一个变量 $bg-color: #FFFFFF; 二.变量的引用: 变量的引用有一个原则,那就是标准css属性值存在的地方,变量就可以存在. 当编译成css文件的时候 ...

  8. Web前端面试指导(八):iframe有那些缺点

    本题的特点 这道题目的特点就是不按照正常的套路来提问,一般都是问优点,这里比较反常问iframe的缺点,很多同学肯定很不习惯这种问答,因为平时只关注有点,这么一问就懵逼了! 本题解答的思路及要点 ① ...

  9. angular2-模块

    Angular模块 (NgModule) Angular 模块是带有 @NgModule 装饰器函数的类. @NgModule接收一个元数据对象,该对象告诉 Angular 如何编译和运行模块代码. ...

  10. 内存分配malloc函数注意事项。

    malloc的全称是memory allocation,中文叫动态内存分配,用于向系统申请分配指定字节的内存空间 原型:extern void *malloc(unsigned int num_byt ...