#P0589. 交换重排(Swap to Rearrange)
交换重排(Swap to Rearrange)
题目描述
给定两个长度为 的数组 和 。你可以选择若干个下标 ,对每个被选择的下标交换 与 。每个下标最多选择一次。
你的目标是让操作后的数组 成为数组 的一个重排。也就是说,两个数组的元素多重集合必须相同。
如果无法做到,输出 ;否则输出任意一种操作方案,不要求操作次数最少。
输入格式
第一行一个整数 ,表示测试组数。
每组数据第一行一个整数 。
第二行 个整数 。
第三行 个整数 。
输出格式
对每组数据,若无解,输出 。
否则输出两行:第一行输出操作次数 ;第二行输出 个整数,表示选择交换的下标。每个下标最多出现一次。
若有多种方案,输出任意一种即可。
样例
4
4
1 1 3 3
2 2 4 4
3
1 2 1
3 3 1
3
1 2 3
2 3 1
4
1 2 2 4
3 1 4 3
2
2 4
-1
0
2
3 4
说明
第一个样例中,交换下标 和 后,,,此时 是 的一个重排。
第二个样例中,无论如何操作都无法达成目标。
数据范围
,,。
所有测试组的 之和不超过 。