Advertisement
Guest User

Număr de insule

a guest
Aug 24th, 2019
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.13 KB | None | 0 0
  1. #include <cmath>
  2. #include <cstdio>
  3. #include <vector>
  4. #include <iostream>
  5. #include <algorithm>
  6. using namespace std;
  7.  
  8. void fill(vector<vector<char>> &a, int i, int j) {
  9.     a[i][j] = '0';
  10.     if (i > 0 && a[i - 1][j] == '1') {
  11.         fill(a, i - 1, j);
  12.     }
  13.     if (i < a.size() - 1 && a[i + 1][j] == '1') {
  14.         fill(a, i + 1, j);
  15.     }
  16.     if (j > 0 && a[i][j - 1] == '1') {
  17.         fill(a, i, j - 1);
  18.     }
  19.     if (j < a[0].size() - 1 && a[i][j+1] == '1') {
  20.         fill(a, i, j + 1);
  21.     }
  22. }
  23. int solve (vector<vector<char>> grid) {
  24.     // TODO : Find number of islands.
  25.     int nr = 0;
  26.     for (int i = 0; i < grid.size(); i++) {
  27.         for (int j = 0; j < grid[i].size(); j++) {
  28.             if (grid[i][j] == '1') {
  29.                 nr++;
  30.                 fill(grid, i, j);
  31.             }
  32.         }
  33.     }
  34.     return nr;
  35. }
  36.  
  37.  
  38. int main() {
  39.     // Don't modify main
  40.     int n, m;
  41.     cin >> n;
  42.     cin >> m;
  43.     vector<vector<char>> grid(n, vector<char>(m));
  44.     for (int i = 0; i < n; ++i) {
  45.         for (int j = 0; j < m; ++j) {
  46.             cin >> grid[i][j];
  47.         }
  48.     }
  49.     cout << solve(grid);
  50.     return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement