星系
2025-01-22 19:08:08
发布于:上海
#include<iostream>
#include<queue>
using namespace std;
int n,m,sx,sy,num;
long long vis[1511][1511],op[2250011],maxx,sum;
char mp[1511][1511],yl;
struct node{
int x,y;
};
int lx[8]={0,0,1,-1,1,1,-1,-1},ly[8]={1,-1,0,0,1,-1,1,-1};
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>mp[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
num=0;
if(mp[i][j]=='*'){
queue<node>q;
q.push({i,j});
while(!q.empty()){
node t=q.front();
q.pop();
for(int i=0;i<8;i++){
int nx=t.x+lx[i],ny=t.y+ly[i];
if(nx<1 || nx>n || ny<1 || ny>m) continue;
if(mp[nx][ny]=='.')continue;
mp[nx][ny]='.';
q.push({nx,ny});
num++;
}
}
if(num==0)num++;
op[num]++;
}
}
}
for(int i=1;i<=2250005;i++){
if(op[i]!=0){
sum++;
maxx=max(maxx,(i*op[i]));
}
}
cout<<sum<<" "<<maxx;
}
这里空空如也
有帮助,赞一个