corner_xiejunqi @ 2024-12-01 18:25:12
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e3+10;
int n,m;
string g1[N];
int g[N][N];
int ans=0;
int dis[4][2]={0,1,0,-1,1,0,-1,0};
int vis[N][N],av[N][N];
int t=1;
inline void bfs(int x,int y){
queue<pair<int,int> > q;
q.push(make_pair(x,y));
vis[x][y]=1;
ans=1;
while(!q.empty()){
int now_x=q.front().first;
int now_y=q.front().second;
q.pop();
av[now_x][now_y]=t;
for(int i=0;i<4;i++){
int xx=now_x+dis[i][0];
int yy=now_y+dis[i][1];
if(xx>=1 && yy>=1 && xx<=n && yy<=n && g[xx][yy]!=g[now_x][now_y] && !vis[xx][yy]){
vis[xx][yy]=1;
q.push(make_pair(xx,yy));
ans++;
}
}
}
return;
}
int sum[N];
signed main(){
// step 1、读题、声明变量
cin.tie(0);cout.tie(0);
ios::sync_with_stdio(false);
// step 2、输入
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>g1[i];
for(int i=1;i<=n;i++){
for(int j=0;j<n;j++){
g[i][j+1]=g1[i][j]-'0';
}
}
// step 3、处理
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(!vis[i][j]){
bfs(i,j);
sum[t]=ans;
t++;
}
}
}
int x,y;
while(m--){
cin>>x>>y;
cout<<sum[av[x][y]]<<'\n';
}
// step 4、输出
return 0;
}