大佬们能帮忙看看哪里有问题吗?
查看原帖
大佬们能帮忙看看哪里有问题吗?
189622
Hia___Hia楼主2020/8/13 09:54
#include<bits/stdc++.h>
using namespace std;
char mapp[2010][2010];
int vis[2010][2010]={0};
int d[2010][2010]={0};
const int dx[]={1,-1,0,0};
const int dy[]={0,0,1,-1};
int n,m;
int sx,sy,ex,ey;
int bfs(int x,int y)
{
	queue<int> qx,qy;
	qx.push(x);
	qy.push(y);
	vis[x][y]=1;
	while(!qx.empty()&&!qy.empty())
	{
		int nx=qx.front();
		qx.pop();
		int ny=qy.front();
		qy.pop();
		for(int i=0;i<4;i++)
		{
			int xx=nx+dx[i];
			int yy=ny+dy[i];
			if((xx>=1&&xx<=n)&&(yy>=1&&yy<=m)&&vis[xx][yy]==0&&mapp[xx][yy]=='.')
			{
				if(xx==ex&&yy==ey)
				{
					return d[nx][ny]+1;
				}
				else
				{
					vis[xx][yy]=1;
					d[xx][yy]=d[nx][ny]+1;
					qx.push(xx);
					qy.push(yy);
				}
			}
		}
	}
	return -1;
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin>>mapp[i][j];
			if(mapp[i][j]=='d')
			{
				ex=i,ey=j;
			}
			if(mapp[i][j]='m')
			{
				sx=i,sy=j;
			}
		}
	}
	if(bfs(sx,sy)==-1)
	{
		cout<<"No way"<<endl;
	}
	else
	{
		cout<<bfs(sx,sy)<<endl;
	}
	return 0;
}
2020/8/13 09:54
加载中...