所以真的不能用DFS吗?
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <string>
#include <string.h>
using namespace std;
char A[1000+10][1000+10];
int a[1000+10][1000+10],s[1000+10][1000+10],n,m,b[100000+10][3],sum,ans[100000+10];
int k[5][3] = {{0,0},{-1,0},{0,1},{1,0},{0,-1}};
void zero()
{
for (int i=1;i<=n;i++)
{
for (int j=1;j<=n;j++)
{
s[i][j] = 0;
}
}
}
void dfs(int x,int y)
{
s[x][y] = 1;
for (int i=1;i<=4;i++)
{
int x1 = x+k[i][0];
int y1 = y+k[i][1];
if (s[x1][y1]==0&&x1>0&&x1<=n&&y1>0&&y1<=n&&a[x1][y1]!=a[x][y]&&i!=0)
{
if (x1==0) cout <<x1<<endl<<y1<<endl;
sum+=1;
s[x1][y1] = 1;
dfs(x1,y1);
}
}
}
int main()
{
scanf ("%d %d", &n, &m);
for (int i=1;i<=n;i++)
{
cin>>A[i];
}
for (int i=1;i<=m;i++)
{
scanf ("%d %d", &b[i][1], &b[i][2]);
}
for (int i=1;i<=n;i++)
{
for (int j=0;j<n;j++)
{
a[i][j+1] = A[i][j]-'0';
}
}
for (int i=1;i<=m;i++)
{
sum = 1;
dfs(b[i][1],b[i][2]);
ans[i] = sum;
zero();
}
for (int i=1;i<=m;i++)
{
printf ("%d\n", ans[i]);
}
return 0;
}
没学过BFS欸...太弱了