Connected Cells in a Grid

  • + 0 comments
    #include<bits/stdc++.h>
    using namespace std;
    int solve(int i,int j,int n,int m,vector<vector<int>>&a)
    {
        if(i<0 || j<0 || i>=n || j>=m || a[i][j]==0)
        {
            return 0;
        }
        a[i][j]=0;
        int r,t,y,f,h,c,v,b;
        r=solve(i-1,j-1,n,m,a);
        t=solve(i-1,j,n,m,a);
        y=solve(i-1,j+1,n,m,a);
        f=solve(i,j-1,n,m,a);
        h=solve(i,j+1,n,m,a);
        c=solve(i+1,j-1,n,m,a);
        v=solve(i+1,j,n,m,a);
        b=solve(i+1,j+1,n,m,a);
        return 1+r+t+y+f+h+c+v+b;
    }
    int main()
    {
        int n,m; cin>>n>>m;
        vector<vector<int>>a;
        for(int i=0;i<n;i++)
        {
            vector<int>temp;
            for(int j=0;j<m;j++)
            {
                int op;
                cin>>op;
                temp.push_back(op);
            }
            a.push_back(temp);
        }
        int ans=0;
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                if(a[i][j]==1)
                {
                    int d=0;
                    d=solve(i,j,n,m,a);
                    ans=max(ans,d);
                }
            }
        }
        cout<<ans;
    }