嗯?为什么RE了????
查看原帖
嗯?为什么RE了????
286752
h1910819075楼主2021/3/12 13:51

求组,大佬们?我的代码为什么有9个测试点都RE了?

#include<bits/stdc++.h>
using namespace std;
const int N=4500+10;
int vis[N][N];
int d[][2]={{-1,0},{1,0},{0,-1},{0,1}};
char mp[1500][1500];
int ans=0,n,m;

void dfs(int x,int y)
{
	//printf("%d %d %c %d \n",x,y,mp[x][y],ans);
	if(x<0||x>3*n||y<0||y>3*m)
	{
		ans=1;
		return ;
	} 
	
	for(int i=0;i<4;i++)
	{
		int dx=(x+d[i][0]);
		int dy=(y+d[i][1]);
		if(vis[dx][dy]==0&&mp[dx%n][dy%m]!='#')
		{
			vis[dx][dy]=1;
			dfs(dx,dy);
			vis[dx][dy]=0;
		}
	}
}

int main()
{
	while(cin>>n>>m)
	{
		for(int i=0;i<n;i++)
			scanf("%s",mp[i]);
		
		int p=0;
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<m;j++)
			{
				if(mp[i][j]=='S')
				{
					p=1;
					dfs(n+i,m+j);
					break;
				}
			}
			if(p) break;
		}
		if(ans)
			printf("Yes\n");
		else
			printf("No\n");
		
		memset(vis,0,sizeof(vis));
		memset(mp,0,sizeof(mp));
		ans=0;
	}
	return 0;
}
2021/3/12 13:51
加载中...