3
vector<vector<int>> paths = {{0, 1}, {0, -1}, {-1, 0}, {1, 0}};4
bool check(int i, int j, int n, int m) {5
if (i >= n or i < 0 or j >= m or j < 0) return false;8
void solve(vector<vector<int>> &image, int sr, int sc, int color, int orig) {9
int n = image.size(), m = image[0].size();10
image[sr][sc] = color;11
for (int i = 0; i < 4; i++) {12
int new_sr = paths[i][0] + sr;13
int new_sc = paths[i][1] + sc;14
if (check(new_sr, new_sc, n, m) == true and image[new_sr][new_sc] == orig) {15
solve(image, new_sr, new_sc, color, orig);19
vector<vector<int>> floodFill(vector<vector<int>> &image, int sr, int sc, int color) {20
if (color == image[sr][sc]) return image;21
int orig = image[sr][sc];22
solve(image, sr, sc, color, orig);