MLE代码
#include<bits/stdc++.h>
using namespace std;
#define reg register
struct node{
int x,y;
};
int a[1005][100005];
int ans;
int n,m,x1,x2;
char qw;
const int dx[]={0,0,1,-1},dy[]={1,-1,0,0};
bool vis[1005][100005];
inline bool ck(int x,int y,int x1,int y1){
if(x>n||y>n||x<1||y<1||vis[x][y]||a[x][y]==a[x1][y1]) return 0;
return 1;
}
inline long long BFS(int x1,int x2){
queue<node> q;
node now,nxt;
now.x=x1,now.y=x2;
q.push(now);
while(!q.empty()){
now=q.front();
q.pop();
for(int i=0;i<4;i++){
if(ck(now.x+dx[i],now.y+dy[i],now.x,now.y)){
ans++;
vis[now.x+dx[i]][now.y+dy[i]]=true;
nxt.x=now.x+dx[i];
nxt.y=now.y+dy[i];
q.push(nxt);
}
}
}
return ans;
}
main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>m;
for(reg int i=1;i<=n;i++){
for(reg int j=1;j<=n;j++){
cin>>qw;
a[i][j]=qw-'0';
}
}
for(reg int i=1;i<=m-1;i++){
memset(vis,false,sizeof(vis));
ans=1;
cin>>x1>>x2;
vis[x1][x2]=true;
cout<<BFS(x1,x2)<<"\n";
}
memset(vis,false,sizeof(vis));
ans=1;
cin>>x1>>x2;
vis[x1][x2]=true;
cout<<BFS(x1,x2);
}