题目描述
blablabla
样例
blablabla
```#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
typedef pair<int,int> PII;
const int N=110;
int hh=0,tt=-1;
int n;
int ax,ay,bx,by;
char g[N][N];//存图
int d[N][N];//记录起点到图中任意一点的距离
bool st[N][N],ans;//防止重复遍历,设一个数组是否便利过
PII q[N*N];
void bfs(){
memset(d,-1,sizeof d);//把所有队列为空
q[++tt]={ax,ay};
d[ax][ay]=0;//表示a已走
st[ax][ay]=true;
int dx[4] = {0, 0, -1, 1};
int dy[4] = {1, -1, 0, 0};
while(hh<=tt){
PII t= q[hh++];//对头取出来
for(int i=0;i<4;i++){
int x=t.first+dx[i],y=t.second+dy[i];
if(x>=0&&x<n&&y>=0&&y<n&&d[x][y]==-1&&g[x][y]!=g[t.first][t.second]){
q[++tt]={x,y};
d[x][y]=d[t.first][t.second]+1;
st[x][y]=true;
if(x==bx&&y==by){
cout<<d[x][y]<<endl;
ans = 1;
return;
}
}
}
}
}
int main()
{
cin>>n;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>g[i][j];
if(g[i][j]=='A') ax=i,ay=j;
if(g[i][j]=='B') bx=i,by=j;
}
}
bfs();
if(ans == 0) cout << "-1" << endl;
// 请在此输入您的代码
return 0;
}
----------
### 算法1
##### (暴力枚举) $O(n^2)$
blablabla
#### 时间复杂度
#### 参考文献
#### C++ 代码
blablabla
----------
### 算法2
##### (暴力枚举) $O(n^2)$
blablabla
#### 时间复杂度
#### 参考文献
#### C++ 代码
blablabla
```