atcoder#ABC137E. [ABC137E] Coins Respawn
[ABC137E] Coins Respawn
配点 : 点
問題文
から までの番号がつけられた 頂点と 辺からなる有向グラフがあります。 番目の辺は頂点 から頂点 へと向かい、この辺の上には 枚のコインが置かれています。 また、頂点 にはボタンが設置されています。
このグラフ上でゲームを行います。 あなたは頂点 でコインを 枚持ってゲームを開始し、辺をたどってコインを拾いながら頂点 を目指します。 本の辺を通るには 分の時間がかかり、辺を通るたびにその辺の上に置かれているすべてのコインを拾うことができます。 ゲームの世界ではよくあるように、ある辺を通ってその上のコインを拾っても、その辺を次に通る際には同じ枚数のコインが再び出現しており、それらを再び拾うことができます。
頂点 に到着したとき、ボタンを押してゲームを終了することができます。(ボタンを押さずに移動を続けることもできます。) ただし、ゲームを終了する際に、ゲーム開始からの経過時間を 分として 枚のコインの支払いが要求されます。持っているコインの枚数が 枚未満の場合は、代わりに持っているコインをすべて支払います。
この支払いの後に残ったコインの枚数があなたのスコアとなります。 獲得できるスコアの最大値が存在するか判定し、存在する場合はその最大値を求めてください。
制約
- 入力中の値はすべて整数である。
- 頂点 から頂点 に到達することが可能である。
入力
入力は以下の形式で標準入力から与えられる。
出力
獲得できるスコアの最大値が存在する場合はその最大値を、存在しない場合は -1
を出力せよ。
3 3 10
1 2 20
2 3 30
1 3 45
35
頂点 から頂点 に移動する方法は以下の 通りです。
- 頂点 : 道中でコインを 枚拾う。ゲーム開始から 分後に頂点 に着き、ボタンを押してコインを 枚支払い、 枚残る。
- 頂点 : 道中でコインを 枚拾う。ゲーム開始から 分後に頂点 に着き、ボタンを押してコインを 枚支払い、 枚残る。
よって、獲得できるスコアの最大値は です。
2 2 10
1 2 100
2 2 100
-1
頂点 から伸びる辺を通ると頂点 に着き、ここで頂点 から自分自身へと向かう辺を 回通ってからボタンを押すとスコアは となります。よってスコアは無限に高めることができ、獲得できるスコアの最大値は存在しません。
4 5 10
1 2 1
1 4 1
3 4 1
2 2 100
3 3 100
0
頂点 から頂点 へと直接向かう辺を通ること以外に頂点 から頂点 に移動する方法はありません。この辺の上で 枚のコインを拾いますが、ゲーム終了時に 枚のコインの支払いを要求されてスコアは となります。
なお、頂点 から頂点 へと向かう辺を通るとその後コインを無限に拾えますが、頂点 に到達してゲームを終了することができなくなるため無意味です。