20分
查看原帖
20分
1039717
Andy_hpy楼主2024/10/28 21:13
#include <bits/stdc++.h>
#include <unistd.h>
using namespace std;
typedef long long ll;
typedef double db;
typedef long double ldb;
const ll MAXN=1505;
const ll dir[][2]={{1,0},{0,1},{-1,0},{0,-1},{-1,1},{1,-1},{1,1},{-1,-1}};
ll colorcount,n,m,s,ans1,ans2;
map<ll,bool>a;
char field[MAXN][MAXN];
ll color[MAXN][MAXN];
void dfs(ll x,ll y){
	++s;
	color[x][y]=colorcount;
	for(ll i=0;i<8;++i){
		ll row=x+dir[i][0],col=y+dir[i][1];
		if(field[row][col]!='.'&&color[row][col]==0){
			dfs(row,col);
		}
	}
}
int main() {
	memset(field,'.',sizeof(field));
	cin>>n>>m;
	for(ll i=1;i<=n;++i){
		for(ll j=1;j<=m;++j){
			cin>>field[i][j];
		}
	} 
	for(ll i=1;i<=n;++i){
		for(ll j=1;j<=m;++j){
			if(field[i][j]!='.'&&color[i][j]==0){
				++colorcount;
				dfs(i,j);
				ans2=max(ans2,s);
				a[s]=true;
				s=0;
			}
		}
	}
	for(auto it=a.begin();it!=a.end();++it)++ans1;
	cout<<ans1<<" "<<ans2;	
	return 0;
}
2024/10/28 21:13
加载中...