社区讨论
70pts求条,wa at #7#9#10
P1363幻象迷宫参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mmirxuwz
- 此快照首次捕获于
- 2026/03/09 14:02 昨天
- 此快照最后确认于
- 2026/03/09 21:12 22 小时前
CPP
#include<bits/stdc++.h>
using namespace std;
int n,m;
char c[1505][1505];
int vis[1505][1505];
int tx[]={+1,-1,0,0};
int ty[]={0,0,+1,-1};
int hash_val(int x,int y){
return (x+n*1000)/n*131 + (y+m*1000)/m*131;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
while(cin>>n>>m){
memset(vis,0,sizeof vis);
int sx,sy;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>c[i][j];
if(c[i][j]=='S')sx=i,sy=j,c[i][j]='.';
}
}
int f=0;
queue<pair<int,int>> q;
q.push({sx,sy});
vis[sx][sy]=hash_val(sx,sy);
while(!q.empty() && !f){
int x=q.front().first,y=q.front().second;
q.pop();
for(int i=0;i<4;i++){
int xx=x+tx[i],yy=y+ty[i];
int rx=xx, ry=yy;
xx=((xx-1)%n+n)%n+1;
yy=((yy-1)%m+m)%m+1;
if(c[xx][yy]=='#') continue;
int h = hash_val(rx,ry);
if(!vis[xx][yy]){
vis[xx][yy]=h;
q.push({rx,ry});
}else if(vis[xx][yy]!=h){
cout<<"Yes\n";
f=1;
break;
}
}
}
if(!f) cout<<"No\n";
}
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...