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 翻译