4AC 6WA 好像最大星系星星个数错了
查看原帖
4AC 6WA 好像最大星系星星个数错了
719619
drinktowind楼主2023/6/21 09:27
using namespace std;
queue<int> qa,qb;
int n,m,x,y,ans,cnt,mx=-1,a[100010],b[100010];
char c[1510][1510];
bool f[1510][1510],vis[100010];
void bfs()
{
	while(!qa.empty())
	{
		x=qa.front();
		y=qb.front();
		qa.pop();
		qb.pop();
		cnt++;
		c[x][y]=0;
		for(int i=-1;i<=1;i++)
		{
			for(int j=-1;j<=1;j++)
			{
				if(c[i+x][j+y]=='*'&&!f[i+x][j+y])
				{
					qa.push(i+x);
					qb.push(j+y);
					f[i+x][j+y]=1;
				}
			}
		}
	}
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
			cin>>c[i][j];
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(c[i][j]=='*')
			{
				cnt=0;
				qa.push(i);
				qb.push(j);
				bfs();
				a[cnt]++;
				if(!vis[cnt])
				{
					ans++;
					vis[cnt]=1;
				}
				while(a[cnt]>=2)
				{
					a[cnt]-=2;
					cnt*=2;
					b[cnt]++;
				}
				mx=max(mx,cnt);
			}
		}
	}
	cout<<ans<<" "<<mx;
	return 0;
}```
2023/6/21 09:27
加载中...