样例都过,但是实测错了
查看原帖
样例都过,但是实测错了
675915
cuteAru楼主2023/1/7 16:37

rt

大佬帮帮忙啊orz!!

#include<bits/stdc++.h>
using namespace std;
int n,m,h=1,t=1,c;
int s1,s2,e1,e2;
char a[610][610];
int q[36000][4];
int fx[5]={0,0,1,0,-1};
int fy[5]={0,1,0,-1,0};
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]=='s')
			{
				s1=i,s2=j;
			}
			else if(a[i][j]=='g')
			{
				e1=i,e2=j;
			}
		}
	}
	a[s1][s2]='#'; 
	q[1][1]=s1;
	q[1][2]=s2;
	q[1][3]=0;
	while(h<=t)
	{
		for(int i=1;i<=4;i++)
		{
			int tx=q[h][1]+fx[i];
			int ty=q[h][2]+fy[i];
			if(tx>=1 && ty>=1 && tx<=n && ty<=m && a[tx][ty]=='.' || a[tx][ty]=='g')
			{
				a[tx][ty]='#';
				t++;
				q[t][1]=tx;
				q[t][2]=ty;
				q[t][3]=q[h][3]+1;
				if(tx==e1 && ty==e2)
				{
					cout<<"Yes";
					exit(0);
				}
			}
		}
		h++;
	}
	cout<<"No";
    return 0;
}
2023/1/7 16:37
加载中...