直接给代码了
#include<bits/stdc++.h>
#define MAXN 1005
using namespace std;
int n,m;
int a[MAXN][MAXN];
bool w[MAXN][MAXN];
struct xy
{
int x,y;
};
xy walk[5]={{0,0},{1,0},{-1,0},{0,1},{0,-1}};
int main()
{
scanf("%d%d",&n,&m);
char t;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
cin>>t;
a[i][j]=t=='1';
}
for(int p=1;p<=m;p++)
{
int x_,y_;
scanf("%d%d",&x_,&y_);
memset(w,0,sizeof(w));
w[x_][y_]=1;
queue<xy>q;
q.push({x_,y_});
while(!q.empty())
{
int tx=q.front().x;
int ty=q.front().y;
w[tx][ty]=1;
for(int i=1;i<=4;i++)
{
int xx=tx+walk[i].x;
int yy=tx+walk[i].y;
if(w[xx][yy]||a[xx][yy]==a[tx][ty])
continue;
q.push({xx,yy});
}
q.pop();
}
int cnt=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(w[i][j])
cnt++;
printf("%d\n",cnt);
}
return 0;
}
7WA, 3T