Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Giải thuật] Tô màu vùng liên thông trên lưới

    Cho một lưới (ma trận) kích thước r×cr \times cr×c, mỗi ô chứa một số nguyên biểu thị màu. Cho một ô xuất phát (sr,sc)(sr, sc)(sr,sc) (chỉ số tính từ 0) và một màu mới newColor.

    Hãy thực hiện thao tác tô màu lan (flood fill): bắt đầu từ ô (sr,sc)(sr, sc)(sr,sc), đổi màu của ô đó và tất cả các ô có cùng màu ban đầu với nó và liên thông với nó theo 4 hướng (trên, dưới, trái, phải) thành newColor. Sau đó in lại toàn bộ lưới.

    Lưu ý: nếu màu ban đầu của ô xuất phát đã bằng newColor thì lưới giữ nguyên.

    • Định dạng đầu vào:

      Dòng đầu chứa năm số nguyên rrr, ccc, srsrsr, scscsc, newColor. Tiếp theo là rrr dòng, mỗi dòng chứa ccc số nguyên (cách nhau bởi dấu cách) mô tả các ô của lưới.

    • Ràng buộc đầu vào:

      1≤r,c≤2001 \le r, c \le 2001≤r,c≤200, 0≤sr<r0 \le sr < r0≤sr<r, 0≤sc<c0 \le sc < c0≤sc<c. Các giá trị màu là số nguyên thoả 0≤maˋu≤1090 \le \text{màu} \le 10^90≤maˋu≤109.

    • Định dạng đầu ra:

      In ra lưới sau khi tô màu: rrr dòng, mỗi dòng ccc số nguyên cách nhau bởi một dấu cách.

    Ví dụ:

    Đầu vào:

    3 3 1 1 2
    1 1 1
    1 1 0
    1 0 1
    

    Đầu ra:

    2 2 2
    2 2 0
    2 0 1

    Giải thích:

    Ô xuất phát (1,1) có màu 1. Vùng các ô màu 1 liên thông 4 hướng với nó được tô thành 2; ô màu 1 ở góc dưới phải không liên thông nên giữ nguyên.

    Đang tải editor...