chl147259 @ 2024-02-01 16:58:45
#include<bits/stdc++.h>
using namespace std;
int minn=1145141,n,a,b,k[2050],js=0,tot=0,dx[4]={1,0,-1,0},m,dy[4]={0,1,0,-1};
string s[1050];
struct op{
int x,y;
};
queue<op>q;
int p[1005][21005];
void bfs(){
while(q.size()!=0){
op t=q.front();
q.pop();
//if(tot==1)
//cout<<t.x<<" "<<t.y<<endl;
for(int i=0;i<=3;i++){
int xx=t.x+dx[i],yy=t.y+dy[i];
if(xx>=0&&xx<n&&yy>=0&&yy<n&&((s[t.x][t.y]=='1'&&s[xx][yy]=='0')||(s[t.x][t.y]=='0'&&s[xx][yy]=='1'))&&!p[xx][yy]){
p[xx][yy]=tot;
js++;
q.push({xx,yy});
}
}
}
}
int main(){
//freopen("P1141_1.in","r",stdin);
cin>>n>>m;
for(int i=0;i<n;i++){
cin>>s[i];
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(!p[i][j]){
tot++;
js=1;
p[i][j]=tot;
q.push({i,j});
bfs();
k[tot]=js;
// cout<<i<<" "<<j<<" "<<k[tot]<<" "<<tot<<endl;
}
}
}
for(int i=1;i<=m;i++){
int ddx,ddy;
cin>>ddx>>ddy;
cout<<k[p[ddx-1][ddy-1]]<<endl;
}
//cout<<js;
return 0;
}/*
8 4
10010011
01100100
10010011
01011011
10001000
00011011
00101000
00000010
1 2
8 6
6 2
4 3
*/