Coi khu vườn là 1 đồ thị $n \times m$ đỉnh
Với mỗi đỉnh $(i,j)$, ta sẽ có cạnh nối tới $4$ đỉnh xung quanh nếu các đỉnh đấy là cây hoặc là khu đất trống.
Ta duyệt lần lượt các ô trên khu vườn, mỗi lần nếu ô đấy thuộc 1 mảnh đất liên thông mới(chưa được duyệt bao giờ) thì ta sẽ bắt đầu BFS/DFS từ ô đấy. Ta sẽ cài 1 biến đếm là số lượng cây ở mảnh đất này.
Trong quá trình BFS/DFS mỗi lần duyệt tới 1 đỉnh là cây thì ta cập nhật tăng biến đếm lên $1$ giá trị.
sau khi duyệt thì ta lưu lại giá trị biến đếm vào 1 cấu trúc dữ liệu.
Sau khi duyệt hết các mảnh đất, ta sắp xếp các giá trị lại và in ra các giá trị.