四十分求助
  • 板块P1141 01迷宫
  • 楼主ckk11288
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/6/13 17:35
  • 上次更新2023/11/4 21:55:39
查看原帖
四十分求助
387031
ckk11288楼主2021/6/13 17:35
#include<bits/stdc++.h>
using namespace std;
bool v[1006][1006]={0};
char maps[1006][1006];
int n,m,x,y,x1,y2,a[1000065],b[1000065],ans[100061];
int f[4]={0,1,0,-1},l[4]={1,0,-1,0};
int bfs(int t)
{
	int i,head=0,tail=1,sss=1;
	a[1]=x1;
	b[1]=y2;
	while(head!=tail)
	{
		head++;
		for(i=0;i<4;i++)
		{
			x=a[head]+f[i];
			y=b[head]+l[i];
			if(x>0&&y>0&&x<=n&&y<=n&&maps[x][y]!=maps[a[head]][b[head]]&&v[x][y]==0)
			{
				v[x][y]=t;
				tail++;
				sss++;
				a[tail]=x;
				b[tail]=y;
			}
		}
	}
	return sss;
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cin>>maps[i][j];
		}
	}
	for(int i=1;i<=m;i++)
	{
		cin>>x1>>y2;
		if(v[x1][y2]==0)
		{
			v[x1][y2]=i;
			ans[i]=bfs(i);
			cout<<ans[i]<<endl;
		}
		else
		{
			int t=v[x1][y2];
			ans[m]=ans[t];
			cout<<ans[m]<<endl;
		}
	}
	return 0;
}
2021/6/13 17:35
加载中...