只有40分求助
查看原帖
只有40分求助
462173
HiAI楼主2022/7/2 10:47
#include<iostream>
#include<queue>
using namespace std;
char a[2001][2001],x,y,d,e,ans;
int x1[]={0,1,0,-1};
int y1[]={1,0,-1,0};
int b[2001][2001];
bool vis[2001][2001],flag;
int main(){
	int n,m;
	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;
			}
		}
	/*for(int i=0;i<=n;i++){
		for(int j=0;j<=m;j++)
			cout<<a[i][j];
		cout<<endl;
	}*/
	queue<int>xx;
	queue<int>yy;
	xx.push(x);
	yy.push(y);
	vis[x][y]=1;
	while(!xx.empty()){
		for(int i=0;i<4;i++){
			int dx=xx.front()+x1[i];
			int dy=yy.front()+y1[i];
			if(!vis[dx][dy]&&dx>=1&&dx<=n&&dy>=1&&dy<=m&&a[dx][dy]!='#'){
				xx.push(dx);
				yy.push(dy);
				vis[dx][dy]=1;
				b[dx][dy]=b[xx.front()][yy.front()]+1;
				if(a[dx][dy]=='d'){
					flag=1;
					break;
				}
			}
		}
		xx.pop();
		yy.pop();
		if(flag)
			break;
	}
	if(!flag)
		cout<<"No Way!";
	else
		cout<<b[d][e];
	return 0;
} 
2022/7/2 10:47
加载中...