救救孩纸,看了半天不知道啥问题
查看原帖
救救孩纸,看了半天不知道啥问题
400642
GRjun楼主2021/7/31 15:58
#include<bits/stdc++.h>
using namespace std;
int n,m,tx,ty,sx,sy;
char a[2001][2001];
bool b[2001][2001];
int q[4100000][4];
int dx[]={-1,0,1,0},dy[]={0,1,0,-1};
int bfs()
{
	q[1][1]=sx;
	q[1][2]=sy;
	q[1][3]=0;
	b[sx][sy]=1;
	int head=0,tail=1;
	while(head!=tail)
	{
		head++;
		int x=q[head][1],y=q[head][2],t=q[head][3];
		for(int i=0;i<4;i++)
		{
			int xx=x+dx[i],yy=y+dy[i];
			if(xx>=1&&yy>=1&&xx<=n&&yy<=m&&b[xx][yy]==0&&a[xx][yy]!='#')
			{
				tail++;
				q[tail][1]=xx;
				q[tail][2]=yy;
				q[tail][3]=t+1;
				if(xx==tx&&yy==ty)
				{
					cout<<q[tail][3]<<endl;
					return 0;
				}
			}
		}
    } 
    cout<<"No Way!"<<endl;
}
int main()
{
  cin>>n>>m;
  for(int i=1;i<=n;i++)
  {
  	for(int j=1;j<=m;j++)
  	{
  		cin>>a[i][j];
  		if(a[i][j]=='m')
  		{
		  sx=i;
		  sy=j;
		}
		if(a[i][j]=='d')
		{
			tx=i;
			ty=j;
		}
	}
  }   
  bfs();
  return 0;
}

2021/7/31 15:58
加载中...