class Solution { public: bool visited[55][55]; vector> mat; const int di[4] = {0, 0, -1, 1}; const int dj[4] = {-1, 1, 0, 0}; int s_color, col, n, m; void dfs(int ci, int cj) { for(int i = 0; i < 4; i++) { int ti = ci + di[i]; int tj = cj + dj[i]; if(ti >= 0 and ti < n and tj >= 0 and tj < m and !visited[ti][tj] and mat[ti][tj] == s_color) { visited[ti][tj] = true; mat[ti][tj] = col; dfs(ti, tj); } } } vector> floodFill(vector>& image, int sr, int sc, int color) { mat = image; n = image.size(); m = image[0].size(); s_color = image[sr][sc]; col = color; dfs(sr, sc); mat[sr][sc] = col; return mat; } };