1 条题解

  • 0
    @ 2023-07-01 19:59:19
    #include<bits/stdc++.h>
    using namespace std;
    int n,m,a[105][105],s,maxs;
    int dir[4][2]={{0,1},{1,0},{-1,0},{0,-1}};
    bool vis[105][105];
    bool check(int x,int y)
    {
        if(x<1||x>n||y<1||y>n)
            return false;
        return true;
    }
    void dfs(int x,int y,int dep)
    {
        if(dep==1)
            s++;
        vis[x][y]=true;
        for(int i=0;i<4;i++)
        {
            int nx=x+dir[i][0];
            int ny=y+dir[i][1];
            if(a[nx][ny]&&!vis[nx][ny]&&check(nx,ny))
            {
                vis[nx][ny]=true;
                s++;
                dfs(nx,ny,dep+1);
            }
        }
    }
    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]&&!vis[i][j])
                {
                    s=0;
                    dfs(i,j,1);
                    if(s>maxs)maxs=s;
                }
        cout<<maxs<<endl;
        return 0;
    }
    
  • 1

信息

ID
1558
难度
4
分类
(无)
标签
递交数
40
已通过
19
通过率
48%
被复制
6
上传者