玄学DFS求调
查看原帖
玄学DFS求调
1053122
shy_lihui楼主2024/9/25 22:59
#include<bits/stdc++.h>
using namespace std;
int n,m;
int f[1505][1505];
set<int> s;
int cnt=0;
void dfs(int x,int y)
{
	if(x<1 || x>n || y<1 || y>m || f[x][y]==0)
	{
		return;
	}
	f[x][y]=0;
	cnt++;
	dfs(x+1,y);
	dfs(x-1,y);
	dfs(x,y+1);
	dfs(x,y-1);
	dfs(x+1,y+1);
	dfs(x+1,y-1);
	dfs(x-1,y+1);
	dfs(x-1,y-1);
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			char x;
			cin>>x;
			f[i][j]=(x!='.');
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(f[i][j])
			{
				cnt=0;
				dfs(i,j);
				s.insert(cnt);
			}
		}
	}
	cout<<s.size()<<' ';
	int maxx=-1;
	for(int i:s)
	{
		maxx=max(maxx,i);
	}
	cout<<maxx;
	return 0;
}
2024/9/25 22:59
加载中...