80求助
查看原帖
80求助
332123
LHLeisus楼主2021/7/26 17:37
#include<iostream>
#include<queue>
#define fffff 2005
using namespace std;
struct E{
	int x,y,step;
}q[fffff];
int vis[fffff][fffff];
int dx[4]={0,0,-1,1};
int dy[4]={1,-1,0,0};
int n,m,sx,sy,ex,ey,head=0,tail=1;
char map[fffff][fffff];	
int main()
{
	cin>>n>>m;
	for(int i=0;i<n;i++)
		for(int j=0;j<m;j++)
		{
			cin>>map[i][j];
			if(map[i][j]=='m')
			{
				sx=i;
				sy=j;
			}
			if(map[i][j]=='d')
			{
				ex=i;
				ey=j;
			}
		}
	q[1].x=sx;
	q[1].y=sy;
	q[1].step=0;
	vis[sx][sy]=1;
	while(head<tail)
	{
		head++;
		for(int i=0;i<4;i++)
		{
			int nx=q[head].x+dx[i];
			int ny=q[head].y+dy[i];
			if(nx==ex&&ny==ey)
			{
				cout<<q[head].step+1;
				return 0;
			}
			if(nx>=0&&ny>=0&&nx<n&&ny<m&&!vis[nx][ny]&&map[nx][ny]!='#')
			{
				vis[nx][ny]=1;
				tail++;
				q[tail].x=nx;
				q[tail].y=ny;
				q[tail].step=q[head].step+1;
			}
		}
	}
	cout<<"No Way!";
	return 0;
}
2021/7/26 17:37
加载中...