QOJ.ac

QOJ

حد الوقت: 2 s حد الذاكرة: 1024 MB مجموع النقاط: 100

#699. 鹅群

الإحصائيات

在初创公司 Gaggle,我们摒弃了旧时代压抑的企业结构,不再有经理、下属和等级制度。相反,我们拥抱一种自由开放的企业文化,所有员工(称为 Gagglers)都对自己负责,并可以自由行动。

Picture by Antranias

与其让经理监督工作,Gaggle 协调工作的主要方法是导师制:每位 Gaggler 指定另一位 Gaggler 作为其导师,并与他们讨论正在进行的项目。这种导师关系可能是对称的,也可能不是(换句话说,你可能是你导师的导师,也可能不是),但你永远不能成为自己的导师。

最初,所有 Gagglers 都可以选择任何他们喜欢的人作为导师,但过了一段时间后,人们发现这导致了两个问题:

  1. 有些人比其他人更受欢迎,有太多人选择他们作为导师,导致他们没有时间做自己的实际工作。
  2. 一些 Gagglers 群体最终与公司其他部分隔绝(例如,如果 Gaggler A 和 B 互为导师,且他们不是其他任何人的导师,则这些群体无法与公司其他部分进行协调)。

为了纠正这两个缺陷,公司(集体)决定:

  1. 每位 Gaggler 必须恰好成为另一位 Gaggler 的导师,并且
  2. 假设每位 Gaggler 只与他们的导师和学员交流,任何 Gaggler 拥有的任何信息都必须能够传达给任何其他 Gaggler。

为了在引入这项新政策的同时奖励编号较小(资历较深)的 Gagglers,公司决定,编号较小的 Gagglers 应尽可能保留他们当前的导师;如果必须更换,他们的新导师编号应尽可能小(即资历更深,经验更丰富)。

具体来说,考虑两种可能的导师分配方案,假设这两种方案中编号最小的差异点是 Gaggler $i$。那么,如果其中一种方案将 Gaggler $i$ 分配给他们最初的导师,我们更倾向于该方案。否则,如果 Gaggler $i$ 在两种方案中都获得了新导师,我们则倾向于 Gaggler $i$ 的新导师编号较小的那个方案。

例如,考虑下方的样例 2。一种可能的导师分配方案是简单地将 Gaggler 1 的导师改为 Gaggler 2。然而,在最优分配方案中(如样例输出 2 所示),我们让 Gaggler 1 保留其当前导师,改为更改 Gaggler 2 和 3 的导师。

输入格式

输入的第一行包含一个整数 $n$ ($2 \le n \le 500\,000$),表示 Gagglers 的数量。 接下来一行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$ ($1 \le a_i \le n$ 且 $a_i \neq i$ 对于每个 $i$),其中 $a_i$ 是 Gaggler $i$ 当前的导师(Gagglers 的编号从 $1$ 到 $n$)。

输出格式

输出一行新的导师分配方案 $b_1, \dots, b_n$,格式与输入相同。新的列表必须是符合新要求的有效分配,并且根据上述平局决胜规则是最优的。

样例

输入格式 1

4
2 1 4 3

输出格式 1

2 3 4 1

输入格式 2

3
3 3 1

输出格式 2

3 1 2

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.