bfs爆0求助(玄关)
  • 板块P1141 01迷宫
  • 楼主ycy1124
  • 当前回复5
  • 已保存回复6
  • 发布时间2024/5/5 12:39
  • 上次更新2024/5/5 14:49:18
查看原帖
bfs爆0求助(玄关)
1199534
ycy1124楼主2024/5/5 12:39
#include<bits/stdc++.h>
using namespace std;
char a[2001][2001];
bool vis[2001][2001];
queue <int> x,y;
int p1[4]={1,-1,0,0},p2[4]={0,0,1,-1};
int n,m;
void bfs(int x1,int y1)
{
	vis[x1][y1]=1;
	for(int i=0;i<=3;i++)
	{
		if(x1+p1[i]>0&&x1+p1[i]<=n&&y1+p2[i]>0&&y1+p2[i]<=n&&!vis[x1+p1[i]][y1+p2[i]])
		{
			if(a[x1+p1[i]][y1+p2[i]]!=a[x1][y1])
			{
				x.push(x1+p1[i]);
				y.push(y1+p2[i]);
			}
		 } 
	}
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			a[i][j]=getchar();
		}
		getchar();
	}
	for(int i=1;i<=m;i++)
	{
		for(int j=1;j<=n;j++)
		{
			for(int k=1;k<=n;k++)
			{
				vis[j][k]=0;
			}
		}
		int x1,y1;
		cin>>x1>>y1;
		x.push(x1);
		y.push(y1);
		int js=0;
		while(!x.empty())
		{
			js++;
			bfs(x.front(),y.front());
			x.pop();
			y.pop();
		}
		cout<<js<<'\n';
	}
	return 0;
}
2024/5/5 12:39
加载中...