继上贴,真不是钓鱼,不行你们问管理员,哪错了
  • 板块学术版
  • 楼主yaozhijiandeyeye
  • 当前回复17
  • 已保存回复17
  • 发布时间2020/11/26 19:27
  • 上次更新2023/11/5 07:17:33
查看原帖
继上贴,真不是钓鱼,不行你们问管理员,哪错了
372653
yaozhijiandeyeye楼主2020/11/26 19:27

lgP1141

#include<bits/stdc++.h>
using namespace std;
struct node{
	int x,y,step;
}que[1000001];

int n,m,xn,yyn,head=1,tail=1;
char a[1001][1001];
bool vis[1001][1001];
int dx[8]={0,1,-1,0},dy[8]={1,0,0,-1};
void bfs()
{
	tail=1;
	head=1;
	vis[xn][yyn]=1;
	que[head].x=xn;
	que[head].y=yyn;
	que[head].step=1;
	tail++;
	while(head<tail)
	{
		for(int i=0;i<4;i++)
		{
			int tx=que[head].x+dx[i],ty=que[head].y+dy[i];
			if((vis[tx][ty]||tx>=n||ty>=n||tx<0||ty<0)||(a[que[head].x][que[head].y]==a[tx][ty]))
			{
				continue;
			}
			else
			{
				vis[tx][ty]=1;
				que[head].x=tx;
				que[head].y=ty;
				que[head].step=que[head-1].step+1;
				tail++;
			}
		}
		head++;
	}
	cout<<que[head-1].step<<"\n";
	return;
}
int main()
{
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			cin>>a[i][j];
		}
	}
	for(int i=0;i<m;i++)
	{
		memset(que,0,sizeof(que));
		memset(vis,0,sizeof(vis));
		cin>>xn>>yyn;
		bfs();
	}
}
2020/11/26 19:27
加载中...