CF691D Swaps in Permutation

题目描述

给定一个 $1,2,...,n$ 的排列,以及 $m$ 个位置对 $(a_{j},b_{j})$。 每一步,你可以选择已给定位置对中的一个,将这两个位置上的数进行交换。你能得到的字典序最大的排列是什么? 设 $p$ 和 $q$ 是 $1,2,...,n$ 的两个排列。如果存在某个 $1 \leq i \leq n$,使得 $p_{k}=q_{k}$ 对任意 $1 \leq k < i$ 都成立,且 $p_{i}

输入格式

第一行包含两个整数 $n$ 和 $m$($1\leq n,m\leq 10^{6}$),表示排列 $p$ 的长度和给定的位置对个数。 第二行包含 $n$ 个互不相同的整数 $p_{i}$($1\leq p_{i}\leq n$),表示排列 $p$ 的元素。 接下来的 $m$ 行,每行包含两个整数 $(a_{j},b_{j})$($1\leq a_{j},b_{j}\leq n$),表示可以交换的两个位置。注意,这里给出的为位置而非数值。

输出格式

输出仅一行,包含 $n$ 个互不相同的整数 $p'_{i}$($1\leq p'_{i}\leq n$),表示能够得到的字典序最大的排列。

说明/提示

由 ChatGPT 5 翻译