ABC237E
ABC237E の解説
解答コード
https://atcoder.jp/contests/abc237/submissions/28967250
問題
移動する際に発生するコストが最大となるルートを探す問題です.
解説
幅優先探索を用いて,全ての地点に移動した後,どの地点で終了した方が最もコストが大きくなるか探します.
最終的に得られるリストのイメージは,上図(例1)の場合,
[0, 2, -4, 3]
となります.
リストの4番目(ゼロインデックスで3番目)の数字が3であるのは,
地点1から地点4まで適切なルートで移動した場合,コスト(楽しさ)が3であることを示しています.
この際,どんなルートで移動したら良いかといった具体的な道順は,保存していません.
実装します.
幅優先探索を行うので,dequeを使います.
標準入力を読み込みます.
地点を示す番号は,ゼロインデックスで処理します.
幅優先探索をしながら,コストの計算を書くと煩雑になるので,
あらかじめ高低差に応じて楽しさを計算する関数を作ります.
地点0から処理を開始します.各地点の初期値は-infにします.
幅優先探索を実行します.
ルートを探索する条件は,以前のルートでその地点に来た時のコストの最大値を,今回移動して来たことでコストの最大値を更新できるかどうかになります.
最後にコストの最大値を出力すると終了です.
以上,ABC237Eの解法でした.