#include<bits/stdc++.h>
#define int long long
using namespace std;
queue <int> x;
queue <int> y;
queue <int> v;
int ans,n,m,sx,sy,a[1010][1010],s[1010][1010];
int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0};
inline void bfs(int sx,int sy){
// ans++;
// Push 初始值
x.push(sx);
y.push(sy);
v.push(a[sx][sy]);
// 枚举队列中每个元素
while(!x.empty()){
// 取头元素并且在队列中删除头元素
int xx,yy,vv;
xx=x.front();
yy=y.front();
vv=v.front();
x.pop();
y.pop();
v.pop();
// 标记头元素对应的数组
s[xx][yy]=1;
// 扩展
for(int i=0;i<4;i++)
{
int nx=xx+dx[i],ny=yy+dy[i];
if(a[nx][ny]!=vv&&s[nx][ny]==0&&nx>=1&&nx<=n&&ny>=1&&ny<=n){
// 满足条件,则push入队列
x.push(nx);
y.push(ny);
v.push(a[nx][ny]);
}
}
}
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++){
string zc;
cin>>zc;
for(int j=1;j<=n;j++)
a[i][j]=zc[j]-'0';
}
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;++j)
for(int k=1;k<=n;++k)
s[j][k]=0;
cin>>sx>>sy;
bfs(sx,sy);
ans=0;
for (int j=1;j<=n;++j)
for(int k=1;k<=n;++k)
ans+=s[j][k];
cout<<ans<<"\n";
}
return 0;
}
怎么会是10呢(挠头
甚至教练还帮忙改了一遍
求佬