#include<bits/stdc++.h>
using namespace std;
int n,m,dx[4]={0,1,0,-1},dy[4]={1,0,-1,0},q[1000010][3],front,rear,mx,my,ddx,ddy;
char a[20010][20010];
bool vis[20010][20010]={false};
void init()
{
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]=='m')
mx=i,my=j;
if(a[i][j]=='d')
ddx=i,ddy=j;
}
front=0,rear=1;
q[rear][0]=mx,q[rear][1]=my,q[rear][2]=0;
vis[mx][my]=true;
}
void bfs()
{
bool find=false;
while(front<rear)
{
front++;
for(int i=0;i<4;i++)
{
int xx=q[front][0]+dx[i];
int yy=q[front][1]+dy[i];
if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&a[xx][yy]!='#'&&!vis[xx][yy])
{
rear++;
q[rear][0]=xx;
q[rear][1]=yy;
q[rear][2]=q[front][2]+1;
vis[xx][yy]=true;
if(xx==ddx&&yy==ddy)
{
find=true;
return;
}
}
}
}
if(!find)
{
q[rear][2]=-1;
return;
}
}
int main()
{
init();
bfs();
if(q[rear][2]==-1)
cout<<"No Way!";
else
cout<<q[rear][2];
return 0;
}
两次提交,一次WA 1个点90分,一次RE 2个点80分,咋回事啊QAQ