蒟蒻WE求调
  • 板块P1141 01迷宫
  • 楼主Samsd
  • 当前回复8
  • 已保存回复8
  • 发布时间2024/8/23 12:42
  • 上次更新2024/8/23 15:31:20
查看原帖
蒟蒻WE求调
1175749
Samsd楼主2024/8/23 12:42

全RE

#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
int n,m,x,y,ans[1005][1005];
bool vis[1005][1005];
char a[1005][1005];
const int fx[]={0,0,1,-1},fy[]={1,-1,0,0};
struct node
{
	int x,y;
};
queue<node>q;
int bfs(int sx,int sy)
{
	int cnt=1;
	memset(vis,0,sizeof vis);
	vis[sx][sy]=1;
	q.push((node){sx,sy});
	while(!q.empty())
	{
		node p=q.front();
		q.pop();
		for(int i=0;i<4;i++)
		{
			int xx=p.x+fx[i],yy=p.y+fy[i];
			if(xx>=1&&xx<=n&&yy>=1&&yy<=n&&!vis[xx][yy]&&a[xx][yy]!=a[p.x][p.y])
			{
				q.push((node){xx,yy});
				vis[xx][yy]=1;
				cnt++;
			}
		}
	}
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			if(vis[i][j])ans[i][j]=cnt;
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			cin>>a[i][j];
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			if(ans[i][j]==0)bfs(i,j);
	for(int k=1;k<=m;k++)
	{
		cin>>x>>y;
		cout<<ans[x][y]<<'\n';
	}
	return 0;
}
2024/8/23 12:42
加载中...