atcoder#ABC285D. [ABC285D] Change Usernames

[ABC285D] Change Usernames

题目描述

あなたの運営する Web サービスには N N 人のユーザがいます。

i i 番目のユーザの現在のユーザ名は Si S_i ですが、Ti T_i への変更を希望しています。
ここで、S1,,SN S_1,\ldots,S_N は相異なり、T1,,TN T_1,\ldots,T_N も相異なります。

ユーザ名を変更する順序を適切に定めることで、以下の条件を全て満たすように、全てのユーザのユーザ名を希望通り変更することができるか判定してください。

  • ユーザ名の変更は 1 1 人ずつ行う
  • どのユーザもユーザ名の変更は一度だけ行う
  • ユーザ名の変更を試みる時点で他のユーザが使っているユーザ名に変更することはできない

输入格式

入力は以下の形式で標準入力から与えられる。

N N S1 S_1 T1 T_1 S2 S_2 T2 T_2 \vdots SN S_N TN T_N

输出格式

条件を全て満たすように全てのユーザのユーザ名を希望通り変更することができるとき Yes、できないとき No と出力せよ。

题目大意

NN 个用户,每个用户有一个用户名 SiS_i 现在每个用户都想改成另一个用户名 TiT_i,如果一个用户想要改的名字没有人正在用,那么这个用户可以改名。现在用户改名的顺序由你决定,请问是否所有用户都可以成功改名。

2
b m
m d
Yes
3
a b
b c
c a
No
5
aaa bbb
yyy zzz
ccc ddd
xxx yyy
bbb ccc
Yes

提示

制約

  • 1  N  105 1\ \leq\ N\ \leq\ 10^5
  • Si,Ti S_i,T_i は英小文字からなる 1 1 文字以上 8 8 文字以下の文字列
  • Si  Ti S_i\ \neq\ T_i
  • Si S_i は相異なる
  • Ti T_i は相異なる

Sample Explanation 1

1 1 番目のユーザの現在のユーザ名は b であり、m への変更を希望しています。 2 2 番目のユーザの現在のユーザ名は m であり、d への変更を希望しています。 まず、2 2 番目のユーザのユーザ名を m から d に変更し、 その後 1 1 番目のユーザのユーザ名を b から m に変更することで、条件を満たしながら変更することができます。 最初の時点では 2 2 番目のユーザのユーザ名が m なので、1 1 番目のユーザのユーザ名を同じ m に変更することはできません。

Sample Explanation 2

1 1 番目のユーザの現在のユーザ名は a であり、b への変更を希望しています。 2 2 番目のユーザの現在のユーザ名は b であり、c への変更を希望しています。 3 3 番目のユーザの現在のユーザ名は c であり、a への変更を希望しています。 条件を満たしながらユーザ名の変更を行うことはできません。