bfs90pts,RE了一个点,求助
  • 板块P1141 01迷宫
  • 楼主shuaiqbr
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/8/8 21:04
  • 上次更新2023/11/3 05:06:23
查看原帖
bfs90pts,RE了一个点,求助
974005
shuaiqbr楼主2023/8/8 21:04
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
struct node{
	int x,y;
};
int n,m,x,y;
int ax[]={0,1,0,-1},ay[]={1,0,-1,0};
queue<node> q;
char g[2001][2001];
int st[2001][2001];
int cnt[114514];
int bfs(int sx,int sy,int l)
{
	int ans=1;
	q.push({sx,sy});
	st[sx][sy]=l;
	while(q.size())
	{
		node t=q.front();
		q.pop();
		for(int i=0;i<4;i++)
		{
			int bx=t.x+ax[i],by=t.y+ay[i];
			if(g[bx][by]!=g[t.x][t.y]&&!st[bx][by]&&bx>=1&&bx<=n&&by>=1&&by<=n)
			{
				q.push({bx,by});
				st[bx][by]=l;
				ans++;
			}
		}
	}
	return ans;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++) scanf("%s",g[i]+1);
	int l=0;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(!st[i][j])
			{
				l++;
				cnt[l]=bfs(i,j,l);
				
			}	
		} 
	}

	for(int i=0;i<m;i++)
	{
		cin>>x>>y;
		cout<<cnt[st[x][y]]<<endl;
	}
	
}
2023/8/8 21:04
加载中...