九十分求助
查看原帖
九十分求助
613598
mmy129楼主2022/10/1 19:11
#include<bits/stdc++.h>
using namespace std;
struct pos{
	int x,y;
}a,b;
queue<pos> q;
int n,m,s_x,s_y,e_x,e_y;
char mp[2010][2010];
bool vis[2010][2010];
int tot[2010][2010];
int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1};
int main(){
	cin>>n>>m;
	string s;
	for(int i=1;i<=n;i++){
		cin>>s;
		for(int j=0;j<m;j++){
			mp[i][j]=s[j];
			if(mp[i][j]=='m'){
				s_x=i,s_y=j;
			}
		}
	}
	vis[s_x][s_y]=1;
	a.x=s_x,a.y=s_y;
	q.push(a);
	while(!q.empty()){
		a=q.front();
		q.pop();
		if(mp[a.x][a.y]=='d'){
			cout<<tot[a.x][a.y];
			return 0;
		}
		for(int i=0;i<4;i++){
			int px=dx[i]+a.x;
			int py=dy[i]+a.y;
			if(px<0||px>n||py<0||py>m) continue;
            if(mp[px][py]=='#'||vis[px][py]==true) continue;
				tot[px][py]=tot[a.x][a.y]+1;
				vis[px][py]=1;
				b.x=px,b.y=py;
				q.push(b);
		}
	}
	cout<<"No Way!";
	return 0;
}
2022/10/1 19:11
加载中...