C++为啥MLE了四个点啊
  • 板块P1141 01迷宫
  • 楼主WBBB、
  • 当前回复2
  • 已保存回复2
  • 发布时间2020/11/25 00:11
  • 上次更新2023/11/5 07:23:18
查看原帖
C++为啥MLE了四个点啊
65278
WBBB、楼主2020/11/25 00:11

求助dalao

思路与第一个题解基本类似

#include<bits/stdc++.h>
using namespace std;
#define REG register
#define IN inline

int n,m,ans[1005][1005],cnt[100005]={0};
bool Map[1005][1005];
int fx[4][2]={1,0,-1,0,0,1,0,-1};

void dfs(int x,int y,int t)
{
	ans[x][y]=t;
	cnt[t]++;
	for(int i=0;i<4;i++)
	{
		int X=x+fx[i][0];
		int Y=y+fx[i][1];
		
		if(X<1||X>n||Y<1||Y>n||Map[x][y]==Map[X][Y]||ans[X][Y]) continue;
		dfs(X,Y,t);
	}
}

int main()
{
	cin>>n>>m;
	
	for(REG int i=1;i<=n;i++)
		for(REG int j=1;j<=n;j++)
			scanf("%1d",&Map[i][j]);
	
	while(m--)
	{
		int x,y;
		
		cin>>x>>y;
		
		if(ans[x][y])
		{
			printf("%d\n",cnt[ans[x][y]]);
			continue;
		}
		
		dfs(x,y,m);
		
		printf("%d\n",cnt[m]);
	}
	
	return 0;
}
2020/11/25 00:11
加载中...