0分求助
  • 板块P1141 01迷宫
  • 楼主_Lazy_zhr_
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/8 22:20
  • 上次更新2023/11/9 11:20:31
查看原帖
0分求助
1054001
_Lazy_zhr_楼主2023/11/8 22:20

寄录

#include<bits/stdc++.h>
using namespace std;
int mx[4]={-1,1,0,0};
int my[4]={0,0,-1,1};
int n,m;
bool map1[1005][1005];
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	for(int j=1;j<=n;j++)
	{
		char x;
		cin>>x;
		if(x=='1')
		map1[i][j]=true;
	}
	for(int i=1;i<=m;i++)
	{
		int qx,qy,a[1000005][5]={},h=1,t=1,sum=1;
		bool map2[1005][1005]={},sh;
		cin>>qx>>qy;
		a[h][1]=qx;
		a[h][2]=qy;
		map2[qx][qy]=true;
		sh=map1[qx][qy];
		while(h<=t)
		{
			for(int j=0;j<4;j++)
			{
				int nx=a[h][1]+mx[j],ny=a[h][2]+my[j];
				if(nx>0&&nx<=n&&ny>0&&ny<=m&&map1[nx][ny]^sh&&!map2[nx][ny])
				{
					t++;
					a[t][1]=nx;
					a[t][2]=ny;
					map2[nx][ny]=true;
					sum++;
					sh=map1[nx][ny];
				}
			}
			h++;
		}
		cout<<sum<<endl;
	}
	return 0;
}
2023/11/8 22:20
加载中...