CF1283C Friends and Gifts
题目描述
有 $n$ 个朋友想在新年互相赠送礼物。每个朋友都要送出且只送出一份礼物,并且收到且只收到一份礼物。朋友不能把礼物送给自己。
对于每个朋友,已知一个值 $f_i$:如果第 $i$ 个朋友还不知道要送给谁,则 $f_i = 0$;如果 $1 \le f_i \le n$,则表示第 $i$ 个朋友想把礼物送给第 $f_i$ 个朋友。
你需要将所有未知的值(即 $f_i = 0$)补全,使得每个朋友都恰好送出一份礼物且收到一份礼物,并且没有人把礼物送给自己。保证初始信息没有矛盾。
如果有多种方案,可以输出任意一种。
输入格式
输入的第一行包含一个整数 $n$($2 \le n \le 2 \times 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$ 为 $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 \ne i$。每个朋友都恰好送出一份礼物且收到一份礼物,没有人把礼物送给自己。
如果有多种方案,可以输出任意一种。
说明/提示
由 ChatGPT 4.1 翻译