BFS,0分求助QWQ
查看原帖
BFS,0分求助QWQ
1068448
guang_zi_guei_ji楼主2024/9/9 22:10
#include<bits/stdc++.h>
using namespace std;
bool a[2000][2000],b[2000][2000];
int n,m,dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
struct go{
	int x,y;
}l,t;
queue<go>q;
int init(){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			b[i][j]=0;
		}
	}
}
int f(int x,int y){
	b[x][y]=1;
	l.x=x,l.y=y;
	q.push(l);
	while(!q.empty()){
		t=q.back();
		q.pop();
		for(int i=0;i<4;i++){
			l.x=t.x+dx[i];
			l.y=t.y+dy[i];
			if(!b[l.x][l.y]&&a[l.x][l.y]!=a[t.x][t.y]&&l.x>0&&l.y>0&&l.x<=n&&l.y<=n){
				b[l.x][l.y]=1;
				q.push(l);
			}
		}
	}
	int sum=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(b[i][j]==1){
				sum++;
			}
		}
	}
	return sum;
}
int main(){
	cin>>n>>m;
	char dz[2000];
	for(int i=1;i<=n;i++){
		cin>>dz;
		for(int j=0;j<n;j++){
			if(dz[j]=='0'){
				a[i][j+1]=0;
			}
			else{
				a[i][j+1]=1;
			}
		}
	}
	int x,y;
	for(int i=0;i<m;i++){
		cin>>x>>y;
		cout<<f(x,y)<<'\n';
	}
	return 0;
}
2024/9/9 22:10
加载中...