AT_abc436_e [ABC436E] Minimum Swap

题目描述

给定一个整数序列 $P=(P_1,P_2,\ldots,P_N)$,它是 $(1,2,\ldots,N)$ 的一个排列。这里保证 $P$ 不等于 $(1,2,\ldots,N)$。 你希望执行以下操作零次或多次,使 $P$ 匹配序列 $(1,2,\ldots,N)$: - 选择一对满足 $1\le i

输入格式

第一行一个整数 $N$。 第二行 $N$ 个整数,表示 $P_1$ $P_2$ $\ldots$ $P_N$。

输出格式

输出答案。

说明/提示

#### 样例解释 1 例如,目标可以在三步内实现: - 选择 $(i,j)=(1,2)$。$P$ 变为 $(1,3,4,2,5)$。 - 选择 $(i,j)=(2,4)$。$P$ 变为 $(1,2,4,3,5)$。 - 选择 $(i,j)=(3,4)$。$P$ 变为 $(1,2,3,4,5)$。 目标不能在两步或更少步骤内实现,因此 $K=3$。 如上所述,选择 $(1,2)$ 作为第一步操作可以在三步内实现目标。此外,如果选择 $(1,3),(1,4),(2,3),(2,4),(3,4)$ 中的任意一个作为第一步操作,通过适当执行后续两步操作,可以使 $P$ 等于 $(1,2,3,4,5)$。 因此,输出 `6`。 #### 数据范围 ### Constraints - $2\le N\le3\times10 ^ 5$ - $1\le P _ i\le N\ (1\le i\le N)$ - $P _ i\ne P _ j\ (1\le i\lt j\le N)$ - 所有输入值均为整数