3TLE,70分求助!!!
查看原帖
3TLE,70分求助!!!
475143
gaojian2007楼主2021/9/7 19:46
#include<iostream>
#include<queue>
#include<algorithm>
#include<cstdio>
using namespace std;
int n,m,fx[5]={0,1,-1,0,0},fy[5]={0,0,0,-1,1},s,ms[1000001],b[1001][1001],f[1001][1001];
char a[1001][1001];
int bfs(int x,int y)
{
	queue<pair<int ,int> >q;
	q.push(make_pair(x,y));
	b[x][y]=1;
	s=1;
	while(!q.empty())
	{
		int u=q.front().first,v=q.front().second;
		q.pop();
		for(int i=1;i<=4;i++)
		{
			int nx=fx[i]+u,ny=fy[i]+v;
			if(nx<1||nx>n||ny<1||ny>n||b[nx][ny]||a[u][v]==a[nx][ny])continue;
			s++;
			b[nx][ny]=1;
			q.push(make_pair(nx,ny));
		}
	}
	return s;
}
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			a[i][j]=getchar();
			while(a[i][j]!='0'&&a[i][j]!='1') a[i][j]=getchar();
		}
	}
	for(int i=1;i<=m;i++)
	{
		for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
		b[i][j]=0;
		s=1;
		int x,y;
		scanf("%d%d",&x,&y);
		ms[i]=bfs(x,y);
	}
	for(int i=1;i<=m;i++)
	printf("%d\n",ms[i]);
	return 0;
}
2021/9/7 19:46
加载中...