AT_abc285_d [ABC285D] Change Usernames
题目描述
你的 Web 服务有 $N$ 个用户。
第 $i$ 个用户当前的用户名为 $S_i$,但希望更改为 $T_i$。
这里,$S_1,\ldots,S_N$ 互不相同,$T_1,\ldots,T_N$ 也互不相同。
请判断是否可以通过适当安排用户名更改的顺序,使得所有用户都能如愿更改用户名,并且满足以下所有条件:
- 用户名的更改一次只进行一个用户。
- 每个用户只能更改一次用户名。
- 在尝试更改用户名时,不能更改为其他用户正在使用的用户名。
输入格式
输入按以下格式从标准输入读入。
> $N$
> $S_1$ $T_1$
> $S_2$ $T_2$
> $\vdots$
> $S_N$ $T_N$
输出格式
如果可以满足所有条件使所有用户都能如愿更改用户名,输出 `Yes`,否则输出 `No`。
说明/提示
## 限制条件
- $1 \leq N \leq 10^5$
- $S_i, T_i$ 为由小写英文字母组成的字符串,长度在 $1$ 到 $8$ 之间。
- $S_i \neq T_i$
- $S_i$ 互不相同。
- $T_i$ 互不相同。
## 样例解释 1
第 $1$ 个用户当前用户名为 `b`,希望更改为 `m`。第 $2$ 个用户当前用户名为 `m`,希望更改为 `d`。
可以先将第 $2$ 个用户的用户名从 `m` 改为 `d`,然后再将第 $1$ 个用户的用户名从 `b` 改为 `m`,这样就能满足所有条件。
一开始第 $2$ 个用户的用户名是 `m`,因此不能直接将第 $1$ 个用户的用户名改为同样的 `m`。
## 样例解释 2
第 $1$ 个用户当前用户名为 `a`,希望更改为 `b`。第 $2$ 个用户当前用户名为 `b`,希望更改为 `c`。第 $3$ 个用户当前用户名为 `c`,希望更改为 `a`。
无法在满足条件的情况下完成所有用户名的更改。
由 ChatGPT 4.1 翻译