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)$
- 所有输入值均为整数