#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