人工知能と競プロやってくブログ

深層学習・機械学習・AI・atcoder・競技プログラミングについて調べてやってみたことをまとめるブログです

AtCoder Beginner Contest 213 [ D - Takahashi Tour ]をPythonで解く(400点、🟫茶diff)

問題

atcoder.jp

解法

コンテスト参加中
「DFS(深さ優先検索)だろ!こりゃACもらった!」
と思ったら、TLEで解けなくてガッカリだったー。
ので復習。

この問題、DFSで木を上方向に戻る処理まで再帰関数で実装してしまったんだが、1に戻って終わるのが前提の問題。
なので、戻るに決まってるので、木構造の一番深いところまで行くところまで計算したら、あとの戻りは自明で決まる。

ゆえに下に行った直後に、元の都市への戻りを追加してしまえば、一番深いところまでの片道の計算で済む。

実装

実行結果

PyPy3(7.3.0) AC 1169ms
Python(3.8.2) AC 1151ms

再帰関数よびまくりだが、PyPyでもPythonでも、そこまで実行速度に差がないね。