#include<bits/stdc++.h>
using namespace std;
char a[101][40]={};
int n,m,sx,sy,ex,ey,vis[50][50];
struct node{
int x,y;
};
queue<node> q;
int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
int bfs(int x,int y){
q.push({x,y});
vis[x][y]=1;
while(!q.empty()){
node u=q.front();
if(a[u.x][u.y]=='*'){
return vis[u.x][u.y]-1;
}
q.pop();
for(int i=0;i<4;i++){
node nu={u.x+dx[i], u.y+dy[i]};
if(a[nu.x][nu.y]!='#'&&vis[nu.x][nu.y]==0&&nu.x<n&&nu.y<m&&nu.x>=0&&nu.y>=0){
q.push(nu);
vis[nu.x][nu.y]=vis[u.x][u.y]+1;
}
}
}
return -1;
}
int main(){
while(1){
cin>>n>>m;
if(n==0&&m==0){
goto A;
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>a[i][j];
if(a[i][j]=='@'){
sx=i;
sy=j;
}
if(a[i][j]=='*'){
ex=i;
ex=j;
}
}
}
cout<<bfs(sx,sy);
memset(vis, 0, sizeof (vis ));
}
A:
return 0;
}
```你这里有座位吗?