Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cmath>
- #include <cstdio>
- #include <vector>
- #include <iostream>
- #include <algorithm>
- using namespace std;
- void fill(vector<vector<char>> &a, int i, int j) {
- a[i][j] = '0';
- if (i > 0 && a[i - 1][j] == '1') {
- fill(a, i - 1, j);
- }
- if (i < a.size() - 1 && a[i + 1][j] == '1') {
- fill(a, i + 1, j);
- }
- if (j > 0 && a[i][j - 1] == '1') {
- fill(a, i, j - 1);
- }
- if (j < a[0].size() - 1 && a[i][j+1] == '1') {
- fill(a, i, j + 1);
- }
- }
- int solve (vector<vector<char>> grid) {
- // TODO : Find number of islands.
- int nr = 0;
- for (int i = 0; i < grid.size(); i++) {
- for (int j = 0; j < grid[i].size(); j++) {
- if (grid[i][j] == '1') {
- nr++;
- fill(grid, i, j);
- }
- }
- }
- return nr;
- }
- int main() {
- // Don't modify main
- int n, m;
- cin >> n;
- cin >> m;
- vector<vector<char>> grid(n, vector<char>(m));
- for (int i = 0; i < n; ++i) {
- for (int j = 0; j < m; ++j) {
- cin >> grid[i][j];
- }
- }
- cout << solve(grid);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement