問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
この問題は前問 (問題4: 拡張ダイクストラ - コストを0にできるチケット) の制約強化版です。
グリッド状の盤面で上下左右の移動を繰り返して、プレイヤーが左上のスタートから右下のゴールまで移動するときに通るマス (スタート、ゴール含む) のコストの合計の最小値を求めてください。
ただし、1 つのマスのコストを 0 にできるチケットを n 枚使えます。なお、このチケットはスタート、ゴールを含む全てのマスに対して使うことができます。
※この問題は、paiza開発日誌で詳しく解説しています
h w
t_{0,0} t_{0,1} ... t_{0,w-1}
t_{1,0} t_{1,1} ... t_{1,w-1}
...
t_{h-1,0} t_{h-1,1} ... t_{h-1,w-1}
n
コストの合計の最小値を 1 行目に出力してください。
すべてのテストケースにおいて、以下の条件をみたします。
・ 1 ≦ h, w ≦ 50
・ 0 ≦ n ≦ 20
・ 0 ≦ t_{i,j} ≦ 100 (0 ≦ i < h, 0 ≦ j < w)
5 12
0 1 1 1 9 9 9 9 1 1 1 1
1 1 1 1 1 9 9 9 1 9 9 1
1 1 1 9 9 9 9 9 1 9 9 1
9 2 9 9 1 1 1 1 1 9 9 1
1 1 1 2 1 9 9 9 9 9 9 1
0
25
5 12
0 1 1 1 9 9 9 9 1 1 1 1
1 1 1 1 1 9 9 9 1 9 9 1
1 1 1 9 9 9 9 9 1 9 9 1
9 2 9 9 1 1 1 1 1 9 9 1
1 1 1 2 1 9 9 9 9 9 9 1
1
20