AtCoder Beginner Contest 285 D問題 Change Usernames
問題
提出解答
問題の概要
人のユーザーがいる. ユーザー のユーザーネームは現在 である.
人のユーザーに対して適切な順番で以下を実行することによって, 全てに対して, ユーザー のユーザーネームを にすることができるか?
- ユーザーネームが あるユーザーが存在しないようなユーザー を選び, ユーザー のユーザーネームを に変更する.
なお, は相異なり, も相異なる. また, である.
制約
- は長さ 以上 以下の英子文字列である.
- は相異なる.
- は相異なる.
解法
となる について, ユーザー のユーザーネームを変更した後に, ユーザー のユーザーネームを変更しなければならない.
そして, 上記で挙げられる条件を満たすような変更の手順は必ず条件を満たす.
よって, 次で定義される有向グラフ が DAG かどうかを判定すれば良い.
この有向グラフは高々 辺である. よって, 時間で判定できる.