// Program to count islands with max nodes in boolean 2D matrix
#include <bits/stdc++.h>
#define n 5
using namespace std;
int counting=0;
void dfs(int M[][n], int visited[][n], int i, int j) {
if (i >= n || i < 0) return ;
if (j >= n || j < 0) return ;
if (M[i][j] == 1 && visited[i][j] == 0) {
visited[i][j] = 1;
counting++;
}
if(M[i][j] == 0)
{
visited[i][j] = 1;
return;
}
dfs(M, visited, i, j + 1) ;
dfs(M, visited, i, j - 1) ;
dfs(M, visited, i - 1, j) ;
dfs(M, visited, i + 1, j);
}
int main() {
int visited[n][n];
// initialize visited to 0
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
visited[i][j] = 0;
}
}
int M[][5] = {{1, 1, 0, 0, 0},
{0, 1, 0, 0, 1},
{1, 0, 0, 1, 1},
{0, 0, 0, 0, 0},
{1, 0, 1, 0, 1}};
int max = INT_MIN;
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
// getting max
if(visited[i][j]==0){
counting=0;
dfs(M, visited, i, j);
if (max < counting)
max = counting;}
}
}
cout << max << endl;
return 0;
}
Ly8gUHJvZ3JhbSB0byBjb3VudCBpc2xhbmRzIHdpdGggbWF4IG5vZGVzIGluIGJvb2xlYW4gMkQgbWF0cml4CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgojZGVmaW5lIG4gNQp1c2luZyBuYW1lc3BhY2Ugc3RkOwogaW50IGNvdW50aW5nPTA7CnZvaWQgZGZzKGludCBNW11bbl0sIGludCB2aXNpdGVkW11bbl0sIGludCBpLCBpbnQgaikgewogIGlmIChpID49IG4gfHwgaSA8IDApIHJldHVybiA7CgogIGlmIChqID49IG4gfHwgaiA8IDApIHJldHVybiA7CiAKICBpZiAoTVtpXVtqXSA9PSAxICYmIHZpc2l0ZWRbaV1bal0gPT0gMCkgewogIAkgdmlzaXRlZFtpXVtqXSA9IDE7CiAgCWNvdW50aW5nKys7CiAKICB9IAogIGlmKE1baV1bal0gPT0gMCkKICB7CiAgCSB2aXNpdGVkW2ldW2pdID0gMTsKcmV0dXJuOwogIAogIH0KICBkZnMoTSwgdmlzaXRlZCwgaSwgaiArIDEpIDsgCiAgZGZzKE0sIHZpc2l0ZWQsIGksIGogLSAxKSA7CiAgZGZzKE0sIHZpc2l0ZWQsIGkgLSAxLCBqKSA7CiAgZGZzKE0sIHZpc2l0ZWQsIGkgKyAxLCBqKTsKfQoKaW50IG1haW4oKSB7CiAgaW50IHZpc2l0ZWRbbl1bbl07CiAgLy8gaW5pdGlhbGl6ZSB2aXNpdGVkIHRvIDAKICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgZm9yIChpbnQgaiA9IDA7IGogPCBuOyBqKyspIHsKICAgICAgdmlzaXRlZFtpXVtqXSA9IDA7CiAgICB9CiAgfQoKICBpbnQgTVtdWzVdID0ge3sxLCAxLCAwLCAwLCAwfSwKICAgICAgICAgICAgICAgIHswLCAxLCAwLCAwLCAxfSwKICAgICAgICAgICAgICAgIHsxLCAwLCAwLCAxLCAxfSwKICAgICAgICAgICAgICAgIHswLCAwLCAwLCAwLCAwfSwKICAgICAgICAgICAgICAgIHsxLCAwLCAxLCAwLCAxfX07CiAgaW50IG1heCA9IElOVF9NSU47CiAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKICAgIGZvciAoaW50IGogPSAwOyBqIDwgNTsgaisrKSB7CiAgICAgIC8vIGdldHRpbmcgbWF4CiAgIGlmKHZpc2l0ZWRbaV1bal09PTApewogICAgY291bnRpbmc9MDsKICAgICAgZGZzKE0sIHZpc2l0ZWQsIGksIGopOwogICAgICBpZiAobWF4IDwgY291bnRpbmcpCiAgICAgIG1heCA9IGNvdW50aW5nO30KICAgIH0KICB9CgogIGNvdXQgPDwgbWF4IDw8IGVuZGw7CiAgcmV0dXJuIDA7Cn0=