fork(1) download
  1. // Program to count islands with max nodes in boolean 2D matrix
  2. #include <bits/stdc++.h>
  3. #define n 5
  4. using namespace std;
  5. int counting=0;
  6. void dfs(int M[][n], int visited[][n], int i, int j) {
  7. if (i >= n || i < 0) return ;
  8.  
  9. if (j >= n || j < 0) return ;
  10.  
  11. if (M[i][j] == 1 && visited[i][j] == 0) {
  12. visited[i][j] = 1;
  13. counting++;
  14.  
  15. }
  16. if(M[i][j] == 0)
  17. {
  18. visited[i][j] = 1;
  19. return;
  20.  
  21. }
  22. dfs(M, visited, i, j + 1) ;
  23. dfs(M, visited, i, j - 1) ;
  24. dfs(M, visited, i - 1, j) ;
  25. dfs(M, visited, i + 1, j);
  26. }
  27.  
  28. int main() {
  29. int visited[n][n];
  30. // initialize visited to 0
  31. for (int i = 0; i < n; i++) {
  32. for (int j = 0; j < n; j++) {
  33. visited[i][j] = 0;
  34. }
  35. }
  36.  
  37. int M[][5] = {{1, 1, 0, 0, 0},
  38. {0, 1, 0, 0, 1},
  39. {1, 0, 0, 1, 1},
  40. {0, 0, 0, 0, 0},
  41. {1, 0, 1, 0, 1}};
  42. int max = INT_MIN;
  43. for (int i = 0; i < 5; i++) {
  44. for (int j = 0; j < 5; j++) {
  45. // getting max
  46. if(visited[i][j]==0){
  47. counting=0;
  48. dfs(M, visited, i, j);
  49. if (max < counting)
  50. max = counting;}
  51. }
  52. }
  53.  
  54. cout << max << endl;
  55. return 0;
  56. }
Runtime error #stdin #stdout 0.44s 1531904KB
stdin
Standard input is empty
stdout
Standard output is empty