1 条题解

  • 3
    @ 2025-7-16 9:32:08
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    int dx[9]={0,0,0,-1,1,-1,-1,1,1}; 
    int dy[9]={0,-1,1,0,0,-1,1,-1,1}; 
    ll n,f[1000][1000],ans,m,maxn;
    string c[1000];
    void dfs(ll x,ll y){
    	f[x][y]=1;
    	for(int i=1;i<=8;i++){
    		int tx=x+dx[i];
    		int ty=y+dy[i];
    		if(tx>n||tx<1||ty>m||ty<1)continue;
    		if(c[tx][ty]=='.'&&f[tx][ty]==0){
    			ans++;
    			dfs(tx,ty);
    		}
    	}
    	return;
    }
    int main(){
    	cin>>m>>n;
    	for(int i=1;i<=n;i++)
    	{
    		cin>>c[i];
    		c[i]=' '+c[i];
    	}
    	for(int i=1;i<=n;i++)
    	{
    		for(int j=1;j<=m;j++)
    		{
    			if(f[i][j]==0&&c[i][j]=='.')
    			{
    				ans=1;
    				c[i][j]='*';
    				f[i][j]=1;
    				dfs(i,j);
    				maxn=max(maxn,ans);
    			}
    		}
    	}
    	cout<<maxn;
    	return 0;
    }
    
    • 1

    信息

    ID
    555
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    (无)
    递交数
    120
    已通过
    56
    上传者