#1198. [NOIP 2009 提高组] 最优贸易
[NOIP 2009 提高组] 最优贸易
题目背景
原比赛的测试数据较弱。此前的题目版本将原比赛数据放在 Subtask 0,将后来补充的 Hack 数据放在 Subtask 1。
题目描述
C 国有 座大城市和 条道路。每条道路连接两个城市,任意一对城市间最多只有一条道路直接相连。有些道路只能单向通行,有些则可以双向通行。统计道路数时,一条双向道路也只计一次。
C 国地域辽阔,各地的资源不同,同一件商品在不同城市的价格可能不同。在同一个城市,商品的买入价与卖出价相同。
商人阿龙来到 C 国旅游。他想利用水晶球在各地的差价,赚取一些旅费。这些城市的编号为 至 。阿龙从城市 出发,在城市 结束行程。他不必走遍所有城市,也可以多次经过同一座城市。
旅途中,他可以在途经的一座城市买入一个水晶球,再在之后到达的另一座城市卖掉,所得利润等于卖价减去买价。阿龙以旅游为主,因此最多进行一次这样的交易。若没有利润可赚,他可以放弃交易。
例如,下图给出了五座城市间的道路。单箭头和双箭头分别表示单向和双向道路。

设城市 至 的价格依次为 。如果阿龙走 ,他可以在城市 花 买入,再在城市 以 卖出,利润为 。
他还可以走 。第一次到达城市 时以 买入,再次来到城市 时以 卖出,然后返回城市 结束旅行。这次交易的利润是 。
给定各城市的价格和各条道路的通行方向,请求出阿龙最多能赚多少旅费。
输入格式
第一行给出正整数 ,对应城市数和道路数。第二行给出 个正整数,按城市编号从小到大列出水晶球价格。
随后 行,每行给出三个正整数 。若 ,道路只允许从城市 前往城市 。若 ,道路可在 和 之间双向通行。每行相邻的数以一个空格隔开。
输出格式
输出最大利润。不进行交易时利润为 。
5 5
4 3 5 6 1
1 2 1
1 4 1
2 3 2
3 5 1
4 5 2
5
说明/提示
保证可以从城市 到达城市 。
原题的分档数据范围如下。
| 数据比例 | 条件 |
|---|---|
| 10% | |
| 30% | |
| 50% | 不存在从一座城市出发、沿道路旅行后又回到该城市的路线 |
| 100% | $1\le n\le10^5,\ 1\le m\le5\times10^5,\ 1\le x,y\le n,\ 1\le z\le2$;城市编号为 至 ,水晶球价格是至多 的正整数 |
NOIP 2009 提高组第三题。