|
i,j,xi,yi;
bool visit[N][N];
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
dis[i][j]=Inf;
memset(visit,false,sizeof(visit));
dis[x][y]=0;
visit[x][y]=true;
queue q;
Node ini;
ini.x=x;ini.y=y;ini.step=0;
q.push(ini);
while(!q.empty())
{
ini=q.front();
q.pop();
for(i=0;i<4;i++)
{
xi=ini.x+mov[i][0];yi=ini.y+mov[i][1];
if(!visit[xi][yi]&&map[xi][yi]!='#')
{
visit[xi][yi]=true;
dis[xi][yi]=ini.step+1;
Node tmp;
tmp.x=xi;tmp.y=yi;
tmp.step=ini.step+1;
q.push(tmp);
}
}
}
}
void dfs(int pos,int now,int cnt,int num)
{
int i;
if(cnt==num)
{
ans=min(ans,now);
return ;
}
for(i=head[pos];i!=-1;i=edge[i].next)
{
int ed=edge[i].e;
if(!vis[ed])
{
vis[ed]=true;
dfs(ed,now+edge[i].w,cnt+1,num);
vis[ed]=false;
}
}
return ;
}
int main()
{
int m,n,i,j,k,x[4],y[4],x0,y0;
bool flag;
while(~scanf("%d%d",&m,&n),m+n)
{
ans=Inf;
flag=true;
getchar();
memset(map,'#',sizeof(map));
memset(head,-1,sizeof(head));
memset(vis,false,sizeof(vis));
t=0;
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
scanf("%c",&map[i][j]);
if(map[i][j]=='@')
x0=i,y0=j;
}
getchar();
}
scanf("%d",&k);
for(i=0;i
?
?
|