P1141,70分TLE求助qwq
#include<bits/stdc++.h>
#define maxn 1234
using namespace std;
struct node{
int x,y;
};
int n,m,dx[4]={0,0,-1,1},dy[4]={-1,1,0,0},vis[maxn][maxn];
char mp[maxn][maxn];
queue<node>q;
int bfs(int x,int y){
int ans=1;
q.push((node){x,y});
vis[x][y]=1;
while(!q.empty()){
node o=q.front();
q.pop();
for(int i=0;i<4;i++){
int nx=o.x+dx[i];
int ny=o.y+dy[i];
if(nx<=0||nx>n||ny<=0||ny>n||mp[nx][ny]==mp[o.x][o.y]||vis[nx][ny]==1)continue;
else{
q.push((node){nx,ny});
vis[nx][ny]=1;
ans++;
}
}
}
return ans;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)cin>>mp[i][j];
for(int i=1;i<=m;i++){
int x,y;
cin>>x>>y;
memset(vis,0,sizeof(vis));
int ans=bfs(x,y);
cout<<ans<<endl;
}
return 0;
}