#include <vector>
#include <iostream>
using namespace std;
void dfs(vector<vector<char>>& grid, int r, int c) {
int rows = grid.size();
int cols = grid[0].size();
if (r < 0 || r >= rows || c < 0 || c >= cols || grid[r][c] == '0') {
return;
}
grid[r][c] = '0'; // mark visited
dfs(grid, r + 1, c);
dfs(grid, r - 1, c);
dfs(grid, r, c + 1);
dfs(grid, r, c - 1);
}
int numIslands(vector<vector<char>>& grid) {
if (grid.empty()) return 0;
int islands = 0;
for (int r = 0; r < grid.size(); r++) {
for (int c = 0; c < grid[0].size(); c++) {
if (grid[r][c] == '1') {
islands++;
dfs(grid, r, c);
}
}
}
return islands;
}
int main() {
vector<vector<char>> grid = {
{'1', '1', '0', '0', '0'},
{'1', '1', '0', '0', '0'},
{'0', '0', '1', '0', '0'},
{'0', '0', '0', '1', '1'}
};
int result = numIslands(grid);
cout << "Number of islands: " << result << endl;
return 0;
}