AT1350第二点RE求助
查看原帖
AT1350第二点RE求助
387031
ckk11288楼主2021/8/31 20:31
#include<bits/stdc++.h>
using namespace std;
int n,m,vs[550][550];
char maps[550][550];
int f[4]={0,1,0,-1},l[4]={1,0,-1,0};
int xs,ys,xe,ye;
inline int read()
{
    register int x = 0, t = 1;
    register char ch=getchar();
    while(ch<'0'||ch>'9')
	{
        if(ch=='-')
            t=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9')
	{
        x=(x<<1)+(x<<3)+(ch^48);
        ch=getchar();
    }
    return x*t;
}
int dfs(int x,int y)
{
	//cout<<x<<" "<<y<<endl;
	if(x==xe&&y==ye)
	{
		cout<<"Yes"<<endl;
		exit(0);
	}
	for(int i=0;i<4;i++)
	{
		int xx=x+f[i];
		int yy=y+l[i];
		if(xx<=n&&yy<=m&&xx>0&&yy>0&&!vs[xx][yy]&&maps[xx][yy]!='#')
		{
			vs[xx][yy]=1;
			dfs(xx,yy);
		}
	}
}
int main()
{
	n=read();
	m=read();
	int i,j;
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)
		{
			scanf(" %c",&maps[i][j]);
			if(maps[i][j]=='s')
			{
				xs=i;ys=j;
			}
			if(maps[i][j]=='g')
			{
				xe=i;ye=j;
			}
		}
	}
	vs[xs][ys]=1;
	if(dfs(xs,ys)==1)
	{
		printf("Yes\n");
	}
	else printf("No\n");
	return 0;
}
2021/8/31 20:31
加载中...