你朋友现在的名字是一个字符串 S。
他们希望把名字改成 T。
不幸的是,他们居住的国家不允许更改名字。
但这小小的阻碍难不倒他们:他们对政府网站进行了一些“调查”,发现了一种交换某些位置字符的方法。
更确切地说,他们找到了 $M$ 对位置 $(i,j)$,并且可以交换这些位置(从 $1$ 开始计数)上的字符。他们可以进行任意次数的交换。
现在他们想知道,是否可以通过一系列交换将 S 转换为 T。
输入格式
第一行包含两个整数 $N$ 和 $M$ ($1 \leq N, M \leq 2 \cdot 10^5$),分别表示 S 和 T 的长度,以及可用的交换次数。
第二行包含字符串 S。
S 由 $N$ 个小写英文字母 a-z 组成。
第三行包含字符串 T。
T 由 $N$ 个小写英文字母 a-z 组成。
接下来的 $M$ 行,每行包含一对整数 $i, j$ ($1 \leq i < j \leq N$),表示你可以交换位置 $i$ 和 $j$ 上的字符。 每对索引 $(i,j)$ 在输入中最多出现一次。
输出格式
如果可以通过一系列交换将 S 转换为 T,输出 Yes。
否则,输出 No。
子任务
你的解法将在多组测试数据上进行测试。 要获得某一组的分数,你必须通过该组中的所有测试用例。
| 子任务 | 分数 | 约束条件 |
|---|---|---|
| 1 | 5 | $N, M \leq 100$,$j=i+1$ 对所有交换 $(i,j)$ 成立,且 T 是有序的^1。 |
| 2 | 14 | $j=i+1$ 对所有交换 $(i,j)$ 成立。 |
| 3 | 10 | $N, M \leq 100$,T 是有序的,且如果允许交换 $(i,j)$ 和 $(j,k)$,则也允许交换 $(i,k)$[^2]。 |
| 4 | 11 | $N, M \leq 2000$,T 是有序的,且如果允许交换 $(i,j)$ 和 $(j,k)$,则也允许交换 $(i,k)$。 |
| 5 | 17 | $N, M \leq 2000$,且如果允许交换 $(i,j)$ 和 $(j,k)$,则也允许交换 $(i,k)$。 |
| 6 | 18 | 如果允许交换 $(i,j)$ 和 $(j,k)$,则也允许交换 $(i,k)$。 |
| 7 | 7 | $N, M \leq 2000$ |
| 8 | 8 | T 是有序的。 |
| 9 | 10 | 无额外约束。 |
[^2]: 请注意,此条件甚至适用于间接交换:如果两个索引 $s$ 和 $t$ 可以通过一系列间接交换 $(s,a), (a,b), \dots, (f, t)$ 来交换,则也必须允许直接交换 $(s,t)$。
样例
样例输入 1
3 1 abc acb 2 3
样例输出 1
Yes
样例输入 2
6 6 nordic cdinor 1 6 2 6 2 3 3 5 4 5 1 4
样例输出 2
Yes
样例输入 3
6 6 kattis sikatt 1 3 1 4 1 5 3 4 3 5 4 5
样例输出 3
No
说明
在样例 1 中,可以交换 abc 中位置 2 和 3 的字母得到 acb。因此,答案为 Yes。
该样例满足所有交换都满足 $j=i+1$ 的约束,因此它可能出现在子任务 2 中。它不满足 T 是有序的,因此它不会出现在子任务 1 中。
在样例 2 中,从 nordic 变为 cdinor 的一种交换序列如下:
因此,答案为 Yes。注意,在此样例中,T 是有序的,因此它可能出现在子任务 7、8 和 9 中。它不满足出现在其他子任务中所需的足够约束。
在样例 3 中,无法从 S 变为 T。一种观察方法是,第六个字母不参与任何交换,且存在不匹配:S 在该位置是 s,而 T 是 t。因此,无论进行何种交换,该位置的字母永远不会相同。该样例满足“如果允许交换 $(i,j)$ 和 $(j,k)$,则也允许交换 $(i,k)$”的约束。因此,它可能出现在子任务 5、6、7 和 9 中(不出现在 3 和 4 中,因为 T 不是有序的)。