玄关,60pts
查看原帖
玄关,60pts
865834
Wuski楼主2024/5/29 13:30

记录

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,m,dd[8][2]={{0,1},{1,0},{0,-1},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1}};
int star[N],cnt=0,maxn=-1,max2=-1,ans=0;
char a[1501][1501];
void dfs(int x,int y){
	a[x][y]='.';
	cnt++;
	for(int i=0;i<8;i++){
		int xx=x+dd[i][0];
		int yy=y+dd[i][1];
		if(xx<1||yy<1||xx>n||yy>m||a[xx][yy]=='.')continue;
		dfs(xx,yy);
	}
	return;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(a[i][j]=='*'){
				dfs(i,j);
				if(star[cnt]==0)ans++;
				star[cnt]++;
				if(star[cnt]>maxn){
					maxn=star[cnt];
					max2=cnt;
				}
				cnt=0;
			}
		}
	}
		
	cout<<ans<<" "<<maxn*max2;
}

2024/5/29 13:30
加载中...