Codeforces Round 611 (Div. 3) |
---|
Закончено |
$$$n$$$ друзей хотят подарить друг другу подарки на Новый год. Каждый друг должен подарить ровно один подарок и получить ровно один подарок. Друг не может подарить подарок самому себе.
Для каждого друга известно значение $$$f_i$$$: оно или равно $$$f_i = 0$$$, если $$$i$$$-й друг не знает, кому он хочет подарить подарок, или равно $$$1 \le f_i \le n$$$, если $$$i$$$-й друг хочет подарить подарок другу $$$f_i$$$.
Вы хотите заполнить неизвестные значения ($$$f_i = 0$$$) таким образом, чтобы каждый друг подарил ровно один подарок и получил ровно один подарок, а также не было друга, который дарит подарок сам себе. Гарантируется, что изначальная информация не противоречива.
Если существует несколько возможных ответов, выведите любой.
Первая строка входных данных содержит одно целое число $$$n$$$ ($$$2 \le n \le 2 \cdot 10^5$$$) — количество друзей.
Вторая строка входных данных содержит $$$n$$$ целых чисел $$$f_1, f_2, \dots, f_n$$$ ($$$0 \le f_i \le n$$$, $$$f_i \ne i$$$, все $$$f_i \ne 0$$$ различны), где $$$f_i$$$ или равно $$$f_i = 0$$$, если $$$i$$$-й друг не знает, кому он хочет подарить подарок, или равно $$$1 \le f_i \le n$$$, если $$$i$$$-й друг хочет подарить подарок другу $$$f_i$$$. Также гарантируется, что есть хотя бы два значения $$$f_i = 0$$$.
Выведите $$$n$$$ целых чисел $$$nf_1, nf_2, \dots, nf_n$$$, где $$$nf_i$$$ должно быть равно $$$f_i$$$, если $$$f_i \ne 0$$$, или номеру друга, которому $$$i$$$-й друг хочет подарить подарок. Все значения $$$nf_i$$$ должны быть различны, $$$nf_i$$$ не может быть равно $$$i$$$. Каждый друг должен подарить ровно один подарок и получить ровно один подарок, а также не должно быть друга, который дарит подарок сам себе.
Если существует несколько возможных ответов, выведите любой.
5 5 0 0 2 4
5 3 1 2 4
7 7 0 0 1 4 0 6
7 3 2 1 4 5 6
7 7 4 0 3 0 5 1
7 4 2 3 6 5 1
5 2 1 0 0 0
2 1 4 5 3
Название |
---|