AT_abc470_d [ABC470D] Inverse and Swap
题目描述
给定一个长度为 $N$ 的排列 $P = (P_1, \dots, P_N)$,其为 $1$ 到 $N$ 的一个排列。
你需要按顺序处理 $Q$ 个操作。操作有以下两种类型:
- `1 x y`:交换 $P_x$ 与 $P_y$ 的值。
- `2`:构造排列 $P' = (P'_1, \dots, P'_N)$,其为 $1$ 到 $N$ 的一个排列,满足如下条件(可以证明这样的 $P'$ 唯一存在):
- 对于 $1 \leq i \leq N$,都有 $P_{P'_i} = i$。
然后用 $P'_1,\dots, P'_N$ 的值依次替换 $P_1,\dots,P_N$。
输出经过所有操作后 $P_1,\dots,P_N$ 的值,数值之间用空格分隔输出在同一行。
输入格式
输入按如下格式从标准输入读取:
> $N$ $Q$
> $P_1$ $P_2$ $\cdots$ $P_N$
> $\mathrm{query}_1$
> ⋮
> $\mathrm{query}_Q$
其中,$\mathrm{query}_q$ 表示第 $q$ 个操作,按以下两种格式之一给出:
> $1$ $x$ $y$
> $2$
输出格式
输出所有操作之后 $P_1,\dots,P_N$ 的值。数之间用空格分隔输出在一行。
说明/提示
### 样例说明 1
每次操作后 $P_1, \dots, P_N$ 的值如下:
- 执行第一个操作后,$P = (2,5,3,1,4)$。
- 执行第二个操作后,$P = (4,1,3,5,2)$。
- 执行第三个操作后,$P = (4,3,1,5,2)$。
- 执行第四个操作后,$P = (4,3,5,1,2)$。
- 执行第五个操作后,$P = (4,5,2,1,3)$。
### 数据范围
- $2 \leq N \leq 5 \times 10^5$
- $1 \leq Q \leq 5 \times 10^5$
- $(P_1, \dots, P_N)$ 为 $1$ 到 $N$ 的一个排列。
- 对于第 1 类操作,$1 \leq x < y \leq N$。
- 所有输入均为整数。
由 ChatGPT 5 翻译