Eason_lyx @ 2024-09-09 22:07:16
代码:
#include<bits/stdc++.h>
using namespace std;
int n,m,cur;
int f[1005][1005];
int ans[100005];
struct M{
char ch;
int x,y;
};
char mmap[1005][1005];
int dx[5]={0,1,0,0,-1};
int dy[5]={0,0,1,-1,0};
void bfs(int x,int y){
//cout<<x<<' '<<y<<endl;
queue<M>q;
cur++;
ans[cur]=1;
f[x][y]=cur;
M tmp;
tmp.x=x;
tmp.y=y;
tmp.ch=mmap[x][y];
q.push(tmp);
while(!q.empty()){
tmp=q.front();
q.pop();
for(int i=1;i<=4;i++){
int nx=tmp.x+dx[i];
int ny=tmp.y+dy[i];
if(mmap[nx][ny]==mmap[x][y]||nx<1||nx>n||ny<1||ny>n)
continue;
tmp.x=nx;
tmp.y=ny;
tmp.ch=mmap[nx][ny];
q.push(tmp);
f[nx][ny]=cur;
ans[cur]++;
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>mmap[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(f[i][j])continue;
bfs(i,j);
}
}
//for(int i=1;i<=n;i++,puts(""))
//for(int j=1;j<=n;j++)
//cout<<f[i][j]<<' ';
int q,w;
for(int i=1;i<=m;i++){
cin>>q>>w;
cout<<ans[f[q][w]]<<endl;
}
return 0;
}