int dx[]={0,0,1,-1};
int dy[]={1,-1,0,0};
class Solution {
public:
void dfs(vector<vector<char>>& grid,vector<vector<bool>>& used,int i,int j,int n,int m){
if(i>=n||i<0||j>=m||j<0)return;
used[i][j]=true;
for(int k=0;k<4;++k){
int x=i+dx[k],y=j+dy[k];
if(x<0||x>=n||y<0||y>=m||used[x][y]||grid[x][y]!='1')continue;
dfs(grid,used,x,y,n,m);
}
}
int numIslands(vector<vector<char>>& grid) {
int n=grid.size(),m=grid[0].size();
vector<vector<bool>>used(n,vector(m,false));
int cnt=0;
for(int i=0;i<n;++i){
for(int j=0;j<m;++j){
if(used[i][j]==false&&grid[i][j]=='1'){
cnt++;
dfs(grid,used,i,j,n,m);
}
}
}
return cnt;
}
};