原题
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int A[100]={0,-1,1},B[100]={0,0,0,-1,1};
int n,t,bx[10100],by[10100];
char s[11000][11000];
bool dx[11000][11000];
struct a1{
int xx,yy,bs;
}qq,qqq;
queue<a1> q;
int main(){
scanf("%d%d",&n,&t);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){
cin>>s[i][j];
switch(s[i][j]){
case 'A':
qq.xx=i;
qq.yy=j;
break;
case 'B':
bx[0]=i;
by[0]=j;
break;
}
}
dx[qq.xx][qq.yy]=1;
for(int i=1;i<=t;scanf("%d%d",&bx[i],&by[i]),i++);
q.push(qq);
for(;qq.bs<=t;){
qq=q.front();
q.pop();
if(qq.xx==bx[qq.bs]&&qq.yy==by[qq.bs]){
printf("%d",qq.bs);
return 0;
}
qq.bs++;
for(int i=1;i<=4;i++){
int xxx=qq.xx+A[i],yyy=qq.yy+B[i];
if(xxx<1||yyy<1||xxx>n||yyy>n)
continue;
if(dx[xxx][yyy]==0&&s[xxx][yyy]!='*'){
dx[xxx][yyy]=1;
qqq=qq;
qqq.xx=xxx;
qqq.yy=yyy;
q.push(qqq);
}
}
}
printf("-1");
return 0;
}