一道题,居然卡在了输入数据上,我去。。。
搞了半天也不知道怎么把数据完整的输进去。。。
这一次涨姿势了。。。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
char mp[106][105];
int dir[4][2]= {1,0,-1,0,0,1,0,-1};///方向
int vis[105][105]; ///标记是否走过
int n;
struct node
{
int x,y;
int step;
};
queue<node>q;
int bfs(int x,int y)
{
node first;
first.x=x;
first.y=y;
first.step=0;
q.push(first);
vis[x][y]=1;
while(!q.empty())
{
node nex=q.front();
q.pop();
int xx=nex.x;
int yy=nex.y;
if(mp[xx][yy]=='B')
{
return nex.step;
}
for(int i=0; i<4; i++)
{
int xxx=xx+dir[i][0];
int yyy=yy+dir[i][1];
if(xxx<=n&&xxx>=1&&yyy<=n&&yyy>=1)
{
if(mp[xxx][yyy]!=mp[xx][yy])
{
if(vis[xxx][yyy]==0)
{
vis[xxx][yyy]=1;
node nexx;
nexx.x=xxx;
nexx.y=yyy;
nexx.step=nex.step+1;
q.push(nexx);
}
}
}
}
}
return -1;
}
int main()
{
memset(vis,0,sizeof(vis));
scanf("%d",&n);
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
cin>>mp[i][j]; ///有点坑啊,这中输入数据的方法赶紧找个小本本记下来。
}
}
int bx;
int by;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
if(mp[i][j]=='A')
{
bx=i;
by=j;
}
}
}
int ans=bfs(bx,by);
printf("%d\n",ans);
}