1568. Minimum Number of Days to Disconnect Island
Difficulty: Hard
Topics: Array
, DepthFirst Search
, BreadthFirst Search
, Matrix
, Strongly Connected Component
You are given an m x n
binary grid grid
where 1
represents land and 0
represents water. An island is a maximal 4directionally (horizontal or vertical) connected group of 1
's.
The grid is said to be connected if we have exactly one island, otherwise is said disconnected.
In one day, we are allowed to change a****ny single land cell (1)
into a water cell (0)
.
Return the minimum number of days to disconnect the grid.
Example 1:
 Input: grid = [[0,1,1,0],[0,1,1,0],[0,0,0,0]]
 Output: 2

Explanation: We need at least 2 days to get a disconnected grid.\
Change land
grid[1][1]
andgrid[0][2]
to water and get 2 disconnected island.
Example 2:
 Input: grid = [[1,1]]
 Output: 2

Explanation: Grid of full water is also disconnected
([[1,1]] > [[0,0]])
,0
islands.
Constraints:
m == grid.length
n == grid[i].length
1 <= m, n <= 30

grid[i][j]
is either0
or1
.
Hint:
 Return 0 if the grid is already disconnected.
 Return 1 if changing a single land to water disconnect the island.
 Otherwise return 2.
 We can disconnect the grid within at most 2 days.
Solution:
We need to consider the following steps:
Steps to Solve the Problem:
Check Initial Connectivity: First, check if the grid is already disconnected by determining if there is more than one island in the grid. If it's already disconnected, return
0
.Check If Single Removal Disconnects the Island: Iterate through each cell of the grid. Temporarily convert the cell from
1
to0
(if it's1
) and check if the grid becomes disconnected by counting the number of islands. If converting a single cell disconnects the island, return1
.Two Day Disconnection: If no single cell conversion disconnects the island, then the grid can be disconnected by converting any two adjacent land cells. Therefore, return
2
.
Key Functions:
 DFS (DepthFirst Search) to find and count islands.
 isConnected to check if the grid is connected.
Let's implement this solution in PHP: 1568. Minimum Number of Days to Disconnect Island
<?php
// Example usage:
$grid1 = [
[0, 1, 1, 0],
[0, 1, 1, 0],
[0, 0, 0, 0]
];
echo minDays($grid1); // Output: 2
$grid2 = [
[1, 1]
];
echo minDays($grid2); // Output: 2
?>
Explanation:

minDays()
function handles the main logic. 
countIslands()
counts how many islands are present using DFS. 
dfs()
is the recursive function to explore the grid and mark visited land cells.
Contact Links
If you found this series helpful, please consider giving the repository a star on GitHub or sharing the post on your favorite social networks 😍. Your support would mean a lot to me!
If you want more helpful content like this, feel free to follow me:
Top comments (0)