求Hack
  • 板块CF1063B Labyrinth
  • 楼主osfly
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/4/3 22:13
  • 上次更新2023/10/28 04:41:55
查看原帖
求Hack
339299
osfly楼主2022/4/3 22:13
#include<cstdio>
int n,m;
char g[4000][4000];
int sx,sy;
int lm,rm;
int nxtx[4]={0,0,1,-1};
int nxty[4]={1,-1,0,0};
bool vis[4000][4000];
int ans;
void dfs(int x,int y,int l,int r)
{
	if(vis[x][y]) return ;
	ans++;
	vis[x][y]=true;
	for(int i=0,nx,ny;i<4;i++)
	{
		nx=x+nxtx[i],ny=y+nxty[i];
		if(nx<1||nx>n||ny<1||ny>m||g[nx][ny]=='*') continue;
		if(i==0)
		{
			if(r+1>rm) continue;
			else dfs(nx,ny,l,r+1);
		}
		else if(i==1)
		{
			if(l+1>lm) continue;
			else dfs(nx,ny,l+1,r);
		}
		else dfs(nx,ny,l,r);
	}
}
int main()
{
	scanf("%d%d",&n,&m);
	scanf("%d%d",&sx,&sy);
	scanf("%d%d",&lm,&rm);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			scanf(" %c",&g[i][j]);
	dfs(sx,sy,0,0);
	printf("%d",ans);
	return 0;
}
2022/4/3 22:13
加载中...