#include<iostream>
using namespace std;
int n,m,ans,cnt=1,d[1000005],f[1005][1005];
bool a[1005][1005],visit[1005][1005];
int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1};
inline bool ok(int x,int y){
return x>=1&&x<=n&&y>=1&&y<=n&&!visit[x][y];
}
void dfs(int x,int y){
//if(visit[x][y])return;
//cout<<x<<" "<<y<<endl;
ans++;
visit[x][y]=1;
f[x][y]=cnt;
for(int i=0;i<4;i++){
int xx=x+dx[i],yy=y+dy[i];
if(a[xx][yy]==!a[x][y]&&ok(xx,yy)){
dfs(xx,yy);
}
}
d[cnt]=ans;
//visit[x][y]=0;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
char t;
cin>>t;
a[i][j]=t-'0';
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
f[i][j]=-1;
}
}
for(int i=0;i<m;i++){
int ii,jj;
ans=0;
cin>>ii>>jj;
//cout<<ii<<" "<<jj<<endl;
if(f[ii][jj]==-1){
dfs(ii,jj);
cnt++;
}
cout<<d[f[ii][jj]]<<"\n";
for(int j=1;j<=n;j++){
for(int k=1;k<=n;k++){
visit[j][k]=0;
}
}
}
return 0;
}
开了O2,参照了囧人232的题解做了优化,还是TLE了