100分求改正
  • 板块P1141 01迷宫
  • 楼主aliah
  • 当前回复15
  • 已保存回复15
  • 发布时间2024/3/7 09:51
  • 上次更新2024/3/7 11:07:15
查看原帖
100分求改正
1095195
aliah楼主2024/3/7 09:51

这题我这代码已经100分了,但是1#测试点MLE,可是根据我的计算,根据题中内容最多也就18MB内容,限制128MB,怎么可能会超?

#include<cstdio>
#define N 1000
using namespace std;
bool a[N][N];
int c[N][N];
bool b[N][N];
int z;
void fun(int n,int x,int y)
{
	z++;
	b[x][y]=true;
	if(x>0 && a[x-1][y]!=a[x][y] && b[x-1][y]==false)
		fun(n,x-1,y);
	if(y>0 && a[x][y-1]!=a[x][y] && b[x][y-1]==false)
		fun(n,x,y-1);
	if(x<n-1 && a[x+1][y]!=a[x][y] && b[x+1][y]==false)
		fun(n,x+1,y);
	if(y<n-1 && a[x][y+1]!=a[x][y] && b[x][y+1]==false)
		fun(n,x,y+1);
}
void f(int n,int x,int y)
{
    c[x][y]=z;
    b[x][y]=false;
    if(x>0 && b[x-1][y]==true && c[x-1][y]==0x7fffffff)
        f(n,x-1,y);
    if(y>0 && b[x][y-1] && c[x][y-1]==0x7fffffff)
        f(n,x,y-1);
    if(x+1<n && b[x+1][y] && c[x+1][y]==0x7fffffff)
        f(n,x+1,y);
    if(y+1<n && b[x][y+1] && c[x][y+1]==0x7fffffff)
        f(n,x,y+1);
}
int main()
{
	int n,m,i,j,x,y;
	scanf("%d%d",&n,&m);
	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
		{
            b[i][j]=false;
			scanf("%1d",&(a[i][j])); 
			c[i][j]=0x7fffffff; 
		}
	for(;m;m--)
	{
		scanf("%d%d",&x,&y);
		if(c[x-1][y-1]==0x7fffffff)
		{
			z=0;
			fun(n,x-1,y-1);
			printf("%d\n",z);
			f(n,x-1,y-1);
		}
		else
			printf("%d\n",c[x-1][y-1]);
	}
	return 0;
}
2024/3/7 09:51
加载中...