编程题
### 问题描述 小明被挑选去参加一个 ACM 比赛。他的任务是解决一个很特别的问题:给定一个整数数组,但是只能通过交换任意两个数的方式来排序。听起来很简单对吧?但是这个问题的难点在于,只有某些数字是可以交换的。例如,数字 $7$ 和数字 $3$ 可以交换,但是数字 $5$ 可能不能和任何数字交换。 你的任务是,给定一个整数数组和一个允许交换的数字对列表,找到可能的最大排序数组。 例如,如果我们有一个数组 $[2, 3, 5, 7]$ 和一个交换列表 ${(3, 7), (5, 2)}$,我们可以先交换 $3$ 和 $7$ 得到 $[2, 7, 5, 3]$,再交换 $5$ 和 $2$ 得到 $[5, 7, 2, 3]$,最终得到可能的排序最大的数组。 ### 输入格式 第一行包含一个整数 $n$,$(1 \leq n \leq 500)$,表示数组中整数的个数。 第二行包含 $n$ 个整数 $a_i$,$(1 \leq a_i \leq 10^9)$,表示整数数组。 第三行包含一个整数 $m$,$(0 \leq m \leq 10^3)$,表示交换列表的对数。 接下来的 $m$ 行,每行包含两个整数 $b_i$,$c_i$,$(1 \leq b_i, c_i \leq 10^9)$,表示可以交换的整数对,题目保证每对整数都存在于数组中。 ### 输出格式 输出一行,包含 $n$ 个整数,表示最大排序数组。 ### 样例输入 ``` 4 2 3 5 7 2 3 7 5 2 ``` ### 样例输出 ``` 5 7 2 3 ``` ### 测评数据规模 $1 \leq n \leq 500$,$1 \leq a_i, b_i, c_i \leq 10^9$,$0 \leq m \leq 10^3$。
查看答案
赣ICP备20007335号-2