class Solution {
public:
int x1[4]={0,-1,0,1};
int y1[4]={1,0,-1,0};
void dfs(int x,int y,int r,int c,vector<vector<int>> &grid,vector<vector<int>> &vis,int &count)
{
vis[x][y]=1;
for(int i=0;i<4;i++)
{
int cx=x+x1[i];
int cy=y+y1[i];
if(cx>=0 && cx<r && cy>=0 && cy<c && !vis[cx][cy] && grid[cx][cy])
{
count++;
dfs(cx,cy,r,c,vis,grid,count);
}
}
}
int maxAreaOfIsland(vector<vector<int>>& grid) {
int n=grid.size();
int m=grid[0].size();
vector<vector<int>> vis(n,vector<int> (m,0));
int ans=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(!vis[i][j] && grid[i][j]==1)
{
int count=1;
dfs(i,j,n,m,grid,vis,count);
ans=max(ans,count);
}
}
}
return ans;
}
};