70分,最后三个点wa,请各位大佬指点一下 代码:
#include<bits/stdc++.h>
using namespace std;
int n,m;
char a[2010][2010];
int f[1010][1010];
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
int x,y;
struct no{
int x1,y1,s;
};
void bfs(){
queue<no>q;
f[x][y]=1;
q.push({x,y,0});
while(!q.empty()){
auto t=q.front();
q.pop();
for(int i=0;i<4;i++){
int x2=t.x1+dx[i];
int y2=t.y1+dy[i];
if(x2<=0||x2>n||y2<=0||y2>m) continue;
if(a[x2][y2]=='#') continue;
if(f[x2][y2]==1) continue;
f[x2][y2]=1;
if(a[x2][y2]=='d'){
cout<<t.s+1;
exit(0);
}
q.push({x2,y2,t.s+1});
}
}
cout<<"No Way!";
exit(0);
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]=='m'){
x=i;
y=j;
}
}
}
bfs();
return 0;
}