void dfs(int x,int y,int **arr,vector<vector<int>>&v,int n,int m){
v[x][y]=1;
int drow[]={-1,-1,0,1,1,1,0,-1};
int dcol[]={0,1,1,1,0,-1,-1,-1};
for(int i=0;i<8;i++){
int r = x+drow[i];
int c = y+dcol[i];
if(r>=0&&r<n&&c>=0&&c<m&&v[r][c]==0 && arr[r][c]==1){
dfs(r,c,arr,v,n,m);
}
}
}
int getTotalIslands(int** arr, int n, int m)
{
int ct=0;
vector<vector<int>>v(n,vector<int>(m,0));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (arr[i][j] == 1 && v[i][j] == 0) {
dfs(i, j, arr, v, n, m);
ct++;
}
}
}
return ct;
}