Editorial for Tô màu đồ thị
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Subtask 1: Ta đơn giản thực hiện các thao tác và xác định màu sắc cuối cùng cho mỗi đỉnh.
Độ phức tạp:
Subtask 2: Gọi là màu sắc cuối cùng của thao tác với hoặc tại đỉnh và là màu sắc cuối cùng của thao tác với tại đỉnh . Ta dễ dàng xây dựng mảng bằng cách duyệt qua tất cả các thao tác.
Với mỗi đỉnh cần xác định màu sắc cuối cùng được tô, ta cần tìm màu sắc xuất hiện sau cùng của một trong hai trường hợp:
- Có thao tác tô trực tiếp tại đỉnh với hoặc , dựa trên .
- Có thao tác tô tại đỉnh là đỉnh liền kề với đỉnh , dựa trên
Độ phức tạp:
Subtask 3: Ta có thể thực hiện đảo ngược các thao tác, từ thao tác thứ đến thao tác thứ nhất. Khi đó, mỗi đỉnh được tô màu đầu tiên sẽ không thay đổi màu sắc ở những lần tô tiếp theo. Hay nói cách khác, đáp án màu sắc cho mỗi đỉnh là màu được tô đầu tiên của đỉnh đó.
Ta có thể giải quyết bằng phương pháp đệ quy. Gọi hàm với mỗi thao tác:
- Nếu trạng thái hàm đã được gọi trước đó thì ta không cần thực hiện hàm này.
- Nếu thì gán kết quả màu sắc của đỉnh bằng và kết thúc hàm.
- Gọi hàm .
- Với mỗi đỉnh liền kề với đỉnh , gọi hàm .
Từ đó, mỗi hàm chỉ thực hiện một lần với việc lưu lại các trạng thái của hàm này.
Độ phức tạp:
Comments