rt呜呜呜
#include <iostream>
using namespace std;
const int Maxn=2000+10;
int n,m;
int sx=0,sy=0;
string s[Maxn];
bool vis[Maxn][Maxn];
int dx[]={1,0,-1,0};
int dy[]={0,1,0,-1};
struct Stu
{
int x,y,cnt;
}a[Maxn*Maxn];
void bfs()
{
int h=1,t=2;
vis[sx][sy]=true;
a[1].x=sx;a[1].y=sy;
a[1].cnt=0;
while(h<t)
{
if(s[a[h].x][a[h].y]=='d')
{
cout<<a[h].cnt<<endl;
return ;
}
for(int i=0;i<4;i++)
{
int nx=a[h].x+dx[i],ny=a[h].y+dy[i];
if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&s[nx][ny]!='#')
{
if(vis[nx][ny]==false)
{
vis[nx][ny]=true;
a[t].x=nx; a[t].y=ny;
a[t].cnt=a[h].cnt+1;
t++;
}
}
}
h++;
}
cout<<"No Way!"<<endl;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>s[i][j];
if(s[i][j]=='m') sx=i,sy=j;
}
}
bfs();
return 0;
}