void dfs(int[][] grid, int row, int col) {
if (!inside(grid, row, col) || seen(row, col)) return;
mark(row, col);
visit(row, col);
dfs(grid, row + 1, col);
dfs(grid, row - 1, col);
dfs(grid, row, col + 1);
dfs(grid, row, col - 1);
}
def dfs(grid, row: int, col: int) -> None:
if not inside(grid, row, col) or seen(row, col):
return
mark(row, col)
visit(row, col)
dfs(grid, row + 1, col)
dfs(grid, row - 1, col)
dfs(grid, row, col + 1)
dfs(grid, row, col - 1)
def dfs(grid: Array[Array[Int]], row: Int, col: Int): Unit =
if inside(grid, row, col) && !seen(row, col) then
mark(row, col)
visit(row, col)
dfs(grid, row + 1, col)
dfs(grid, row - 1, col)
dfs(grid, row, col + 1)
dfs(grid, row, col - 1)
void dfs(const std::vector<std::vector<int>>& grid, int row, int col) {
if (!inside(grid, row, col) || seen(row, col)) return;
mark(row, col);
visit(row, col);
dfs(grid, row + 1, col);
dfs(grid, row - 1, col);
dfs(grid, row, col + 1);
dfs(grid, row, col - 1);
}