[Beginner Free Contest 36] SECRETGIFT

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C++, Pascal, PyPy, Python

Tổ 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

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.