10pts求调
查看原帖
10pts求调
1283894
Czy54188楼主2024/8/21 15:22
#include <bits/stdc++.h>

int n,m,x,y,iq[4]={1,-1,0,0},aq[4]={0,0,1,-1};
char Map[1500][1500];
bool ans,vis[1500][1500];

void dfs(int x,int y){
	if((x==0 && Map[n][y]=='.')||(x==n-1 && Map[0][y]=='.')||(y==0 && Map[x][n]=='.')||(y==m-1 && Map[x][0]=='.')){
		ans=true;
		return ;
	}
	for(int i=0;i<4;i++){
		int xx=x+iq[i],yy=y+aq[i];
		if(Map[xx][yy]=='#' || !vis[xx][yy] || xx==n || yy==m) continue;
		vis[xx][yy]=false;
		dfs(xx,yy);
		vis[xx][yy]=true;
	}
	return ;
}

int main(){
	while(scanf("%d%d",&n,&m)!=EOF){
		ans=false;
		for(int i=0;i<n;i++) for(int j=0;j<m;j++) vis[i][j]=true;
		for(int i=0;i<n;i++) scanf("%s",Map[i]);
		for(int i=0;i<n;i++) for(int j=0;j<m;j++) if(Map[i][j]=='S'){
			x=i;
			y=j;
			i=n;
			j=m;
		}
		vis[x][y]=false;
		dfs(x,y);
		if(ans) puts("Yes");
		else puts("No");
	}
	return 0;
}

1个WA,8个TLE

2024/8/21 15:22
加载中...