atcoder#ABC137E. [ABC137E] Coins Respawn

[ABC137E] Coins Respawn

配点 : 500500

問題文

11 から NN までの番号がつけられた NN 頂点と MM 辺からなる有向グラフがあります。 ii 番目の辺は頂点 AiA_i から頂点 BiB_i へと向かい、この辺の上には CiC_i 枚のコインが置かれています。 また、頂点 NN にはボタンが設置されています。

このグラフ上でゲームを行います。 あなたは頂点 11 でコインを 00 枚持ってゲームを開始し、辺をたどってコインを拾いながら頂点 NN を目指します。 11 本の辺を通るには 11 分の時間がかかり、辺を通るたびにその辺の上に置かれているすべてのコインを拾うことができます。 ゲームの世界ではよくあるように、ある辺を通ってその上のコインを拾っても、その辺を次に通る際には同じ枚数のコインが再び出現しており、それらを再び拾うことができます。

頂点 NN に到着したとき、ボタンを押してゲームを終了することができます。(ボタンを押さずに移動を続けることもできます。) ただし、ゲームを終了する際に、ゲーム開始からの経過時間を TT 分として T×PT \times P 枚のコインの支払いが要求されます。持っているコインの枚数が T×PT \times P 枚未満の場合は、代わりに持っているコインをすべて支払います。

この支払いの後に残ったコインの枚数があなたのスコアとなります。 獲得できるスコアの最大値が存在するか判定し、存在する場合はその最大値を求めてください。

制約

  • 2N25002 \leq N \leq 2500
  • 1M50001 \leq M \leq 5000
  • 1Ai,BiN1 \leq A_i, B_i \leq N
  • 1Ci1051 \leq C_i \leq 10^5
  • 0P1050 \leq P \leq 10^5
  • 入力中の値はすべて整数である。
  • 頂点 11 から頂点 NN に到達することが可能である。

入力

入力は以下の形式で標準入力から与えられる。

NN MM PP

A1A_1 B1B_1 C1C_1

::

AMA_M BMB_M CMC_M

出力

獲得できるスコアの最大値が存在する場合はその最大値を、存在しない場合は -1 を出力せよ。

3 3 10
1 2 20
2 3 30
1 3 45
35

入力例 1 で与えられるグラフの図

頂点 11 から頂点 33 に移動する方法は以下の 22 通りです。

  • 頂点 1231 \rightarrow 2 \rightarrow 3: 道中でコインを 20+30=5020 + 30 = 50 枚拾う。ゲーム開始から 22 分後に頂点 33 に着き、ボタンを押してコインを 2×10=202 \times 10 = 20 枚支払い、5020=3050 - 20 = 30 枚残る。
  • 頂点 131 \rightarrow 3: 道中でコインを 4545 枚拾う。ゲーム開始から 11 分後に頂点 33 に着き、ボタンを押してコインを 1×10=101 \times 10 = 10 枚支払い、4510=3545 - 10 = 35 枚残る。

よって、獲得できるスコアの最大値は 3535 です。

2 2 10
1 2 100
2 2 100
-1

入力例 2 で与えられるグラフの図

頂点 11 から伸びる辺を通ると頂点 22 に着き、ここで頂点 22 から自分自身へと向かう辺を tt 回通ってからボタンを押すとスコアは 90+90t90 + 90t となります。よってスコアは無限に高めることができ、獲得できるスコアの最大値は存在しません。

4 5 10
1 2 1
1 4 1
3 4 1
2 2 100
3 3 100
0

入力例 3 で与えられるグラフの図

頂点 11 から頂点 44 へと直接向かう辺を通ること以外に頂点 11 から頂点 44 に移動する方法はありません。この辺の上で 11 枚のコインを拾いますが、ゲーム終了時に 1010 枚のコインの支払いを要求されてスコアは 00 となります。

なお、頂点 11 から頂点 22 へと向かう辺を通るとその後コインを無限に拾えますが、頂点 44 に到達してゲームを終了することができなくなるため無意味です。