fork download
  1. #include<vector>
  2. #include<utility>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. vector<pair<int, int>> dirs;
  8.  
  9. void dfs(vector<vector<char>>& grid, int i, int j) {
  10. if(i < 0 || i >= grid.size() || j < 0 || j >=grid[0].size() || grid[i][j] == '0') return;
  11. grid[i][j] = '0';
  12. for(int i = 0; i < dirs.size(); i++) {
  13. int ni = i + dirs[i].first;
  14. int nj = j + dirs[i].second;
  15. dfs(grid, ni, nj);
  16. }
  17. }
  18.  
  19. int numIslands(vector<vector<char>>& grid) {
  20. int count(0);
  21. dirs = {{0, 1} ,{0, -1}, {1, 0}, {-1, 0}};
  22. for(int i = 0; i < grid.size(); i++) {
  23. for(int j = 0; j < grid[0].size(); j++) {
  24. if(grid[i][j] == '1') {
  25. dfs(grid, i, j);
  26. count++;
  27. }
  28. }
  29. }
  30. return count;
  31. }
  32.  
  33. int main() {
  34. vector<vector<char>> num = {{'1','1','0','0','0'},{'1','1','0','0','0'},{'0','0','1','0','0'},{'0','0','0','1','1'}};
  35. cout << numIslands(num);
  36. return 0;
  37. }
Success #stdin #stdout 0s 4516KB
stdin
Standard input is empty
stdout
5