#include<iostream>
#include<vector>
using namespace std;
vector<vector<int>> grid;
int m, n;
int b[4][4] = {
{-1,0},
{0,1},
{1,0},
{0,-1}
};
class solution
{
vector<vector<bool>> visit;
public:
int test()
{
m = grid.size();
n = grid[0].size();
int count = 0;
visit = vector<vector<bool>>(m, vector<bool>(n, false));
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
if (!visit[i][j])
{
count++;
dfs(i, j);
}
}
private:
void dfs(int i, int j)
{
if (i<0 || i>m || j<0 || j>n||!grid[i][j])
return;
visit[i][j] = true;
for (int i = 0; i < 4; i++)
{
int newx, newy;
newx = i + b[i][0];
newy = j + b[i][1];
dfs(newx, newy);
}
}
}