100pts_Hack1_MLE_求调
  • 板块P1141 01迷宫
  • 楼主lrqcs
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/7/27 11:07
  • 上次更新2024/7/27 12:05:43
查看原帖
100pts_Hack1_MLE_求调
1364494
lrqcs楼主2024/7/27 11:07
#include<stdio.h>
int n,q,x,y,i,j,all[1010010],k[1010][1010],t;
char mp[1010][1010],vis[1010][1010];
int dfs(int x,int y){
	int ans=1;
	vis[x][y]=1;k[x][y]=t;
	if(x>1&&mp[x][y]^mp[x-1][y]&&!vis[x-1][y])ans+=dfs(x-1,y);
	if(y>1&&mp[x][y]^mp[x][y-1]&&!vis[x][y-1])ans+=dfs(x,y-1);
	if(x<n&&mp[x][y]^mp[x+1][y]&&!vis[x+1][y])ans+=dfs(x+1,y);
	if(y<n&&mp[x][y]^mp[x][y+1]&&!vis[x][y+1])ans+=dfs(x,y+1);
	return ans;
}
int main(){
	scanf("%d%d",&n,&q);
	for(i=1;i<=n;++i)scanf("%s",mp[i]+1);
	for(i=1;i<=n;++i)for(j=1;j<=n;++j)
		if(!vis[i][j])all[++t]=dfs(i,j);
	while(q--)
		scanf("%d%d",&x,&y),
		printf("%d\n",all[k[x][y]]);
	return 0;
}

记录

数组没开太大,1e6*(4+4+1+1)/1024/1024约等于9MB.

2024/7/27 11:07
加载中...