代码
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
using namespace std;
int m,n,a[21][21],h[1001][4],x,y,w,v,dx[5]={0,1,0,-1,0},dy[5]={0,0,1,0,-1};
char c[21];
void bfs(int x,int y)
{
int head=0,tail=1;
h[1][1]=x;
h[1][2]=y;
h[1][3]=0;
a[x][y]=0;
while(head<tail)
{
head++;
for(int i=1;i<=4;i++)
{
int nx=h[head][1]+dx[i];
int ny=h[head][2]+dy[i];
if(nx>=1&&nx<=m&&ny>=1&&ny<=n&&a[nx][ny]==0&&nx!=x&&ny!=y)
{
tail++;
h[tail][1]=x;
h[tail][2]=y;
h[tail][3]=h[head][3]+1;
a[nx][ny]=h[tail][3];
}
}
if(a[w][v]>0)
{
cout<<a[w][v]<<endl;
return ;
}
}
}
int main()
{
int i,j;
while(cin>>m>>n)
{
memset(a,0,sizeof(a));
if(m==0&&n==0)
return 0;
for(i=1;i<=m;i++)
gets(c);
for(j=0;j<=n-1;j++)
{
if(c[j]=='#')
a[i][j+1]=1;
if(c[j]=='@')
{
x=i;
y=j+1;
}
if(c[j]=='*')
{
w=i;
v=j+1;
}
}
}
bfs(x,y);
}
顺便问下在哪里举报人