#abc285d. [abc285_d]Change Usernames

[abc285_d]Change Usernames

题目描述

你运营着一个拥有 NN 个用户的网络服务。

ii 个用户当前使用的用户名是 SiS_i,希望将其更改为 TiT_i
其中,S1,ldotsS_1,\\ldotsSNS_N 两两不同,T1,ldotsT_1,\\ldotsTNT_N 也是如此。

要确定是否存在一种适当的顺序来更改他们的用户名,以满足所有请求,并且满足以下条件:

  • 每次只能更改一个用户的用户名;
  • 每个用户的用户名只能更改一次;
  • 更改用户名时,新的用户名不能在该时间点被其他用户使用。

约束条件

  • 1leqNleq1051 \\leq N \\leq 10^5
  • SiS_iTiT_i 是由小写英文字母组成长度在 1188(含)之间的字符串。
  • SineqTiS_i \\neq T_i
  • SiS_i 两两不同。
  • TiT_i 两两不同。

输入

从标准输入中以以下格式给出:

NN S1S_1 T1T_1 S2S_2 T2T_2 vdots\\vdots SNS_N TNT_N

输出

如果可以按照条件更改他们的用户名以满足所有请求,则打印 Yes;否则打印 No


示例输入1

2
b m
m d

示例输出1

Yes

第一个用户使用当前用户名 b,希望将其更改为 m
第二个用户使用当前用户名 m,希望将其更改为 d

首先,将第二个用户的用户名从 m 更改为 d;然后将第一个用户的用户名从 b 更改为 m。这样,你就能够达到目标。

注意,你不能一开始就将第一个用户的用户名更改为 m,因为此时它被第二个用户使用。


示例输入2

3
a b
b c
c a

示例输出2

No

第一个用户使用当前用户名 a,希望将其更改为 b
第二个用户使用当前用户名 b,希望将其更改为 c
第三个用户使用当前用户名 c,希望将其更改为 a

我们无法按照条件更改他们的用户名。


示例输入3

5
aaa bbb
yyy zzz
ccc ddd
xxx yyy
bbb ccc

示例输出3

Yes