Are_this @ 2024-06-15 12:33:48
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll a[1005][1005];
ll b[1005][1005];
bool f[1005][1005];
ll n,m,s,a1,b1,a2,b2,k,zd=LLONG_MIN;
ll dx[5]={0,-1,0,0,1};
ll dy[5]={0,0,-1,1,0};
struct data
{
ll x,y,s;
ll zx;
}bbt[1000*1000+10];
string ss;
char c;
void bfs(ll x,ll y)
{
zd=0;
ll tx=0,ty=0;
ll h=0,t=1;
bbt[0].x=x;
bbt[0].y=y;
f[x][y]=1;
while(h!=t)
{
for(ll i=1;i<=4;i++)
{
tx=bbt[h].x+dx[i];
ty=bbt[h].y+dy[i];
ll p=bbt[h].s;
if(tx<1||ty<1||tx>n||ty>n|f[tx][ty]||a[tx][ty]==a[bbt[h].x][bbt[h].y]||b[tx][ty]>0)continue;
f[tx][ty]=1;
bbt[t].x=tx;
bbt[t].y=ty;
bbt[t].s=p+1;
bbt[t].zx=h;
t++;
}
h++;
}
for(ll i=0;i<=h;i++)
{
b[bbt[i].x][bbt[i].y]=h;
}
}
int main()
{
cin>>n>>k;
for(ll i=1;i<=n;i++)
{
cin>>ss;
for(ll j=1;j<=n;j++)
{
a[i][j]=(ss[j-1]-'0');
}
}
for(ll i=1;i<=n;i++)
{
for(ll j=1;j<=n;j++)
{
if(f[i][j]==0)bfs(i,j);
}
}
while(k--)
{
scanf("%lld%lld",&a1,&b1);
printf("%lld\n",b[a1][b1]);
}
return 0;
}
WA 9个点!