[Beginner Free Contest 36] SECRETGIFT
Xem dạng PDFTổ chức FC có một sự kiện đặc biệt trong tháng 10: vào ngày này, người thứ ~i~ có nhiệm vụ tặng quà bí mật cho duy nhất ~1~ người ~a_i~.
Không có nhân viên nào trong tổ chức được tặng quà cho chính mình và cũng không có hai nhân viên nào được giao nhiệm vụ tặng quà cho cùng một người.
Nói cách khác: ~a_i\ne i~ và ~a_i\ne a_j~ với mọi ~1 \le i < j \le n~. Mọi năm, dãy ~a_i~ được máy tính sinh ngẫu nhiên. Tuy nhiên năm nay mọi người có nguyện vọng muốn được tặng quà cho người mà họ quý mến. (Hiển nhiên là cũng không có ai ái kỷ đến mức tự muốn tặng quà cho bản thân mình).
Do đó, sếp của tổ chức muốn nhờ bạn tìm hộ cách giao nhiệm vụ giao quà hợp lý nhất sao cho có nhiều người được tặng quà cho người mà họ quý mến nhất có thể.
Dữ liệu
Dòng thứ nhất ghi số ~n~ là số nhân viên của tổ chức FC ~(2 \le n \le 2 \cdot 10^5)~.
Dòng thứ hai ghi ~n~ số ~b_1, b_2, \ldots, b_n~, trong đó ~b_i~ là người mà nhân viên thứ ~i~ yêu quý ~(1 \le b_i \le n,\ b_i \ne i)~.
Kết quả
Dòng thứ nhất in số ~k~ là số người nhiều nhất có thể được thoả mãn nguyện vọng.
Dòng thứ hai in ~n~ số ~a_1, a_2, \ldots, a_n~ là cách giao nhiệm vụ thoả mãn yêu cầu của tổ chức và có đúng ~k~ người được thoả mãn nguyện vọng ~(a_i = b_i)~.
Nếu có nhiều cách giao nhiệm vụ, in ra cách bất kì.
Ví dụ
Sample Input 1
3
2 1 2
Sample Output 1
2
3 1 2
Sample Input 2
7
6 4 6 2 4 5 6
Sample Output 2
4
6 4 7 2 3 5 1
Chấm điểm
Subtask 1 (~50\%~ số test): ~n \le 10~
Subtask 2 (~50\%~ số test): Không có ràng buộc gì thêm
Bình luận