求助赏关注
查看原帖
求助赏关注
930686
Forge_Unique楼主2023/11/16 12:14
#include<cstring>
#include<iostream>
using namespace std;
const int N = 1010;
bool st[N][N];
char w[N][N];
int dx[4] = {0,1,0,-1};
int dy[4] = {-1,0,1,0};
int n,m,ans;
void bfs(int x,int y){
	st[x][y] = false;
	ans++;
	if(w[x][y] == '0'){
		for(int i = 0;i < 4;i++){
			int a = x + dx[i],b = y + dy[i];
			if(a <= 0 || a > n || b <= 0 || b > n){
				continue;
			}
			if(!st[a][b]){
				continue;
			}
			if(w[a][b] == '0'){
				continue;
			}
			bfs(a,b);
		}
	}
	if(w[x][y] == '1'){
		for(int i = 0;i < 4;i++){
			int a = x + dx[i],b = y + dy[i];
			if(a <= 0 || a > n || b <= 0 || b > n){
				continue;
			}
			if(!st[a][b]){
				continue;
			}
			if(w[a][b] == '1'){
				continue;
			}
			bfs(a,b);
		}
	}
}
int main(){
	ios::sync_with_stdio(true);
	cin.tie(0),cout.tie(0);
	cin >> n >> m;
	for(int i = 0;i < n;i++){
		cin >> w[i];
	}
	for(int i = 0;i < m;i++){
		int x,y;
		cin >> x >> y;
		memset(st,true,sizeof(st));
		ans = 0;
		bfs(x,y);
		cout << ans << endl;
	}
	return 0;
}

0分

2023/11/16 12:14
加载中...