60分WA+TLE,求问 why WA
  • 板块P1363 幻象迷宫
  • 楼主Tangcm
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/7/22 15:45
  • 上次更新2025/7/22 17:31:17
查看原帖
60分WA+TLE,求问 why WA
1778019
Tangcm楼主2025/7/22 15:45
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,m,sx,sy,pd;
char a[5001][5001];
ll dx[4]={0,0,-1,1};
ll dy[4]={-1,1,0,0};
void dfs(ll x,ll y)
{
	if(pd)return;
	if(x==0||y==0||x==3*n+1||y==3*m+1)
	{
		pd=1;
		return;
	}
	for(ll i=0;i<4;i++)
	{
		ll nx=x+dx[i],ny=y+dy[i];
		if(nx>=0&&nx<=3*n+1&&ny>=0&&ny<=3*m+1&&a[nx][ny]!='#')
		{
			a[nx][ny]='#';
			dfs(nx,ny);
			a[nx][ny]='.';
		}
	}
}
int main()
{
	while(scanf("%lld%lld",&n,&m)!=EOF)
	{
		pd=0;
		for(ll i=1;i<=n;i++)
		{
			for(ll j=1;j<=m;j++)
			{
				cin>>a[i][j];
				if(a[i][j]!='S')a[i+n][j]=a[i+n][j+m]=a[i][j+m]=a[i+2*n][j+2*m]=a[i+2*n][j]=a[i][j+2*m]=a[i+n][j+2*m]=a[i+2*n][j+m]=a[i][j];
				else
				{
					a[i][j]='.';
					a[i+n][j]=a[i+n][j+m]=a[i][j+m]=a[i+2*n][j+2*m]=a[i+2*n][j]=a[i][j+2*m]=a[i+n][j+2*m]=a[i+2*n][j+m]=a[i][j];
					a[i+n][j+m]='S';
				}
			}
		}
//		for(ll i=1;i<=3*n;i++)
//		{
//			for(ll j=1;j<=3*m;j++)cout<<a[i][j];
//			cout<<endl;
//		}
		for(ll i=n+1;i<=2*n;i++)
		{
			for(ll j=m+1;j<=2*m;j++)
			{
				if(a[i][j]=='S')
				{
					sx=i;
					sy=j;
				}
			}
		}
		dfs(sx,sy);
		if(pd)cout<<"Yes";
		else cout<<"No";
		cout<<endl;
	}
}
2025/7/22 15:45
加载中...