#include<bits/stdc++.h>
using namespace std;
char a[330][330];
int t[330][330];
int beginx,beginy;
int wx,wy;
int dx[5]={0,1,0,0,-1};
int dy[5]={0,0,1,-1,0};
int n,m;
void find(char x)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
if(i==wx&&j==wy) continue;
if(a[i][j]==x)
{
wx=i,wy=j;
return;
}
}
return;
}
int dfs(int x,int y,int time)
{
if(t[x][y]<time) return t[x][y];
t[x][y]=time;
if(a[x][y]=='=') return t[x][y];
if('A'<=a[x][y]&&a[x][y]<='Z')
{
wx=x;wy=y;
find(a[x][y]);
return dfs(wx,wy,time+1);
}
int ans=INT_MAX;
for(int i=1;i<=4;i++)
{
int newx=x+dx[i],newy=y+dy[i];
if(a[newx][newy]=='#') continue;
ans=min(ans,dfs(newx,newy,time+1));
}
return ans;
}
int main()
{
memset(a,'#',sizeof(a));
memset(t,n*m,sizeof(t));
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
if(a[i][j]=='@') beginx=i,beginy=j;
}
cout<<dfs(beginx,beginy,0);
return 0;
}
为啥输出为0???