80TLE求dalao帮改
  • 板块P1141 01迷宫
  • 楼主lizulong
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/1/13 13:00
  • 上次更新2023/10/24 04:27:32
查看原帖
80TLE求dalao帮改
695995
lizulong楼主2023/1/13 13:00
#include<bits/stdc++.h>
using namespace std;
char aa[1005][1005];
int a[1005][1005];
int f[1005][1005];
int n,m,sum=0;
void dfs(int x,int y,int ff,int fff) {
	f[x][y]=ff;
	if(a[x+1][y]!=fff&&f[x+1][y]!=ff) {
		if(x<n) {
			if(a[x+1][y]==!fff) sum++;
			dfs(x+1,y,ff,!fff);
		}
	}
	if(a[x-1][y]!=fff&&f[x-1][y]!=ff) {
		if(x>1) {
			if(a[x-1][y]==!fff) sum++;
			dfs(x-1,y,ff,!fff);
		}
	}
	if(a[x][y-1]!=fff&&f[x][y-1]!=ff) {
		if(y>1) {
			if(a[x][y-1]==!fff) sum++;
			dfs(x,y-1,ff,!fff);
		}
	}
	if(a[x][y+1]!=fff&&f[x][y+1]!=ff) {
		if(y<n) {
			if(a[x][y+1]==!fff) sum++;
			dfs(x,y+1,ff,!fff);
		}
	}
}
int main() {
	int x,y;
	cin>>n>>m;
	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++) {
			cin>>aa[i][j];
			a[i+1][j+1]=aa[i][j]-'0';
		}
	for(int i=1;i<=m;i++) {
		cin>>x>>y;
		sum=1;
		dfs(x,y,i,a[x][y]);
		cout<<sum<<endl;
	}
	return 0;
}
2023/1/13 13:00
加载中...