Alice 和 Bob
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

Bob 经常喜欢出题考验 Alice:

Alice 有一个长度为 n 的排列 A,Bob 同样也有一个长度为 n 的排列 B,Bob 问 Alice 你能通过变换序列使得

你的排列 A 变成我的排列 B 吗?Bob 不希望 Alice 太轻易的达成目标,所以他给出了 m 个能变换的一些位置信息,每个信息由一个二元组 (i,j) 描述,表示其可以交换 i,j 两个位置的元素。

Alice 可以使用下面技能任意次:
  • 她可以自己添加任意一个变换的信息,同时她为了不让 Bob 发现,其必须先删掉一个已经存在的变换信息。
请问 Alice 可以通过使用技能(也可以不用)调整这 m 组信息,然后可以根据这些信息,对排列 A 做出任意次变换(也可以不变换)使其变成排列 B 吗?

注意 Alice 必须先确定自己调整完了这 m 组信息,才会开始变换。(即不能在开始变换后又再次调整信息)

输入描述:

本题有多组测试数据。

先输入 T(1\leq T\leq 10^5),表示数据组数。

对于每组数据:

1 行输入 n(1\leq n\leq 10^5),表示排列长度。

2 行输入 n 个整数 A_i(1\leq A_i\leq n),表示 Alice 的排列。

3 行输入 n 个整数 B_i(1\leq B_i\leq n),表示 Bob 的排列。

4 行输入 m(0\leq m\leq 10^5),表示给出的变换信息个数。

接下来 m 行,每行两个整数 i,j(1\leq i<j\leq n),表示其可以交换 i,j 两个位置的元素,保证所有信息不重复。

对于 T 组数据,保证 \sum n\leq 10^5\sum m\leq 10^5

输出描述:

对于每组数据,如果无论如何都无法使得排列 A 变成排列 B,请你输出 No,否则输出 Yes。
示例1

输入

复制
2
3
1 2 3
2 1 3
1
1 3
2
1 2
2 1
0

输出

复制
Yes
No

说明

第 1 组样例,显然可以添加一条变换信息 (1,2),删掉一条信息 (1,3),这样 Alice 就可以交换 A_1,A_2 的元素了,所以就可以把 1,2,3 换成 2,1,3,所以输出 Yes。

2 组样例,由于 m=0,显然 Alice 没办法了,技能也用不了,所以肯定没的变换了,输出 No。