AtCoder Beginner Contest 237 E 問題 Skiing
問題
提出解答
問題の概要
スキー場には 個の広場があり, 広場 の標高は である. また, 個の坂があり, 広場 と広場 を双方向に行き来可能にする.
この坂でのみ広場を移動でき, 標高が である広場から, 広場 である広場へ坂を利用して移動した場合, 以下のようにして楽しさが変化する.
- ならば, 楽しさが だけ増加する.
- ならば, 楽しさが だけ減少する.
最初, 広場 にいるとする. ここから 本以上の坂を利用して移動を繰り返した場合の楽しさの最大値を求めよ.
制約
- どの の広場もいくつかの坂を利用して移動できる.
解法
移動した際の楽しさの増減値から, 広場 で移動を終えた場合の楽しさは になる. を固定すると, 登った高さの総和を最小化する問題になる. よって, 次の問題を解くことになる.
重み付き有向グラフ がある. ただし,
この問題は Dijkstra 法で解くことになる. そして, 答えは
である. Dijkstra 法の計算量は であり, 十分高速である.