Find the maximum area of land (island) in a grid using connected components (DFS/BFS).
Asked in the Online assessment stage.
Implement max_island_area(grid). The grid contains 0 for water and 1 for land. Cells are connected horizontally or vertically, not diagonally. Return the number of cells in the largest connected land component. Return 0 if the grid has no land.
Example 1: [[0,1,0],[1,1,1],[0,1,0]] returns 5.
Example 2: [[1,0,0],[0,1,0]] returns 1 because diagonal cells are not connected.
Constraints: 1 <= rows, cols <= 300; every cell is 0 or 1.
def max_island_area(grid):