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