#ddcc2020finalb. [ddcc2020_final_b]Hawker on Graph
[ddcc2020_final_b]Hawker on Graph
問題文
頂点 辺の重み付き有向グラフ があります。 の頂点には 、辺には と番号が振られています。 辺 は頂点 から頂点 へ張られており、辺の重みは です。 あなたは、 上で次のようなゲームをします。
初めに、所持金 円を持って頂点 上に立つ。その後、以下の操作を 回行う:
- 自分の今いる頂点から出ている辺を つ選んで、その辺が接続する頂点に移動する。
- このとき、選んだ辺の重みを とすると、 が正ならば 円得る。逆に が負ならば 円失う。また、所持金が負となることはない。すなわち、元の所持金を 円とすると、移動後の所持金は 円である。
同じ辺を何度通ってもよく、通るたびに所持金が変化します。 回の操作を完了する前に、移動が不可能になる頂点に訪れては行けません。 また、ゲーム終了時はどの頂点に立っていても構いません。
このとき、ゲーム終了時の所持金は最大でいくらにできるかを求め、出力してください。 ただし、どのように操作を行っても 回の操作を完了できない場合は、 を出力してください。
制約
- ならば
入力
入力は以下の形式で標準入力から与えられる。
出力
回の操作を完了できる場合には、ゲーム終了時の所持金の最大値を出力せよ。 どのように操作を行っても完了できない場合は、 を出力せよ。
入力例 1
5 6 0 1 5
1 2 1
2 3 2
3 4 1
4 1 -1
3 1 -4
2 5 7
出力例 1
8
頂点を $1 \\rightarrow 2 \\rightarrow 3 \\rightarrow 1 \\rightarrow 2 \\rightarrow 5$ と移動すれば、所持金は 円となります。
入力例 2
5 6 10 1 4
1 2 1
1 3 3
2 4 6
5 4 0
3 5 2
2 5 1
出力例 2
-1
どのように操作を行っても 回の操作を完了することはできません。したがって を出力します。
入力例 3
2 2 0 2 1000000000
1 2 100000
2 1 100000
出力例 3
100000000000000