蒟蒻求救
  • 板块P1141 01迷宫
  • 楼主osfly
  • 当前回复1
  • 已保存回复1
  • 发布时间2020/8/7 09:57
  • 上次更新2023/11/6 21:03:52
查看原帖
蒟蒻求救
339299
osfly楼主2020/8/7 09:57
#include<cstdio>
int n,m;
char g[1001][1001];
bool vis[1001][1001];
int startx,starty;
int r;
int nxt[4][2]={{0,1},{0,-1},{1,0},{-1,0}}; 
//01
//10
void dfs(int x,int y,int step)
{
	r=step;
	for(int i=0,nx,ny;i<4;i++)
	{
		nx=x+nxt[i][0];
		ny=y+nxt[i][1];
		if(nx<1||nx>n||ny<1||ny>n) continue;
		if(g[x][y]=='1'&&g[nx][ny]=='0'&&!vis[nx][ny])
		{
			vis[nx][ny]=true;
			dfs(nx,ny,step+1);
			vis[nx][ny]=false;
		}
		else if(g[x][y]=='0'&&g[nx][ny]=='1'&&!vis[nx][ny])
		{
			vis[nx][ny]=true;
			dfs(nx,ny,step+1);
			vis[nx][ny]=false;
		}
	}
	return ;
}
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++) scanf(" %c",&g[i][j]);
	while(m--)
	{
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++) vis[i][j]=false;
		scanf("%d%d",&startx,&starty);
		vis[startx][starty]=true;
		dfs(startx,starty,1);
		printf("%d\n",r);
	}
	return 0;
}
2020/8/7 09:57
加载中...