CF501B Misha and Changing Handles
题目描述
Misha 攻破了 Codeforces 网站。然后他决定让所有用户都可以更改他们的用户名。现在,用户可以任意多次更改自己的用户名。但每个新的用户名都不能与已经被使用过或曾经被使用过的用户名相同。
Misha 有一份用户名更改请求的列表。在所有请求处理完成后,他想了解每位用户的原始用户名与新用户名之间的对应关系。请你帮他完成这个任务。
输入格式
第一行为整数 $q$($1 \leq q \leq 1000$),表示用户名更改请求的数量。
接下来的 $q$ 行,每行包含一个请求的描述。
每个请求由两个非空字符串 $old$ 和 $new$ 组成,中间以一个空格分隔。这两个字符串都只包含大小写拉丁字母和数字。$old$ 和 $new$ 是不同的字符串。每个字符串的长度不超过 $20$。
请求按照时间顺序给出。也就是说,在每一个请求时,只有一个人拥有用户名 $old$,而 $new$ 尚未被任何人使用,也从未被使用过。
输出格式
输出第一行为整数 $n$,表示至少更改过一次用户名的用户数量。
接下来的 $n$ 行,每行输出两个字符串 $old$ 和 $new$,用空格分隔,表示该用户最初的用户名为 $old$,在所有请求完成后他的用户名为 $new$。输出的行顺序可以任意。
每个更改过用户名的用户在这个描述中只能出现一次。
说明/提示
由 ChatGPT 5 翻译