RE求助
查看原帖
RE求助
1258467
hao12345ia楼主2024/6/20 21:26
#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[2001][2001];
char x;
int mapx[5]={0,1,-1,0,0},mapy[5]={0,0,0,1,-1};
int q[2001][3];
void bfs(int x,int y){
	q[1][1]=x;
	q[1][2]=y;
	q[1][3]=0;
	a[x][y]=1;
	int h=0,t=1;
	while(h<=t){
		h++;
		for(int i=1;i<=4;i++){
			int xx=q[h][1]+mapx[i];
			int yy=q[h][2]+mapy[i];
			if(a[xx][yy]==3){
				cout<<q[h][3]+1;
				return ;			 
			}
			if(xx<=n&&yy<=m&&xx>0&&yy>0&&a[xx][yy]==0){
				t++;
				a[xx][yy]=1;
				q[t][1]=xx;
				q[t][2]=yy;
				q[t][3]=q[h][3]+1;
			}
		}	
	}
	cout<<"No Way!";
}
int main(){
	cin>>n>>m;
	int x1,y;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>x;
		   if(x=='#'){
			   	a[i][j]=1;
			}
			if(x=='.'){
				a[i][j]=0;
			}
			if(x=='d'){
				a[i][j]=3;
			}
			if(x=='m'){
				x1=i,y=j;
			}
		}
	}
	bfs(x1,y);
}
2024/6/20 21:26
加载中...