#include<bits/stdc++.h>
using namespace std;
struct node{
int x;
int y;
}e[1000010];
int dx[4]={0,-1,0,1};
int dy[4]={-1,0,1,0};
int n,q,head,tail,qx,qy;
int ans[1010][1010],k,sum;
int res[1000010];
char ch[1010][1010];
long long read(){
char ch=getchar();
long long sgn=1,x=0;
while(ch<'0'||ch>'9'){
if(ch=='-'){
sgn=-1;
}
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<3)+(x<<1)+(ch&15);
ch=getchar();
}
return x*sgn;
}
void write(long long n,bool p){
if(n<0){
putchar('-');
n=-n;
}
if(n==0){
if(p==true){
putchar('0');
}
return;
}
write(n/10,0);
putchar(n%10+'0');
}
int main(){
n=read();
q=read();
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>ch[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(ans[i][j]!=0){
continue;
}
k++;
head=1;
tail=1;
sum=1;
e[head].x=i;
e[head].y=j;
ans[i][j]=k;
while(head<=tail){
for(int l=0;l<4;l++){
long long xx=dx[l]+e[head].x;
long long yy=dy[l]+e[head].y;
if(ans[i][j]==0){
if(xx>=1&&xx<=n&&yy>=1&&yy<=n){
if((ch[xx][yy]=='0'&&ch[e[head].x][e[head].y]=='1')||
(ch[xx][yy]=='1'&&ch[e[head].x][e[head].y]=='0')){
tail++;
sum++;
ans[xx][yy]=k;
e[tail].x=xx;
e[tail].y=yy;
}
}
}
}
head++;
}
res[k]=sum;
}
}
for(int i=1;i<=q;i++){
qx=read();
qy=read();
printf("%lld\n",res[ans[qx][qy]]);
}
return 0;
}
样例:输出1 1