测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A7005. 淘金者

编程题 普及/提高-

题目描述

X 国有 $N$ 个城镇,编号为 $1$ 到 $N$。
此外,这个国家有 $M$ 条单向道路。第 $i$ 条道路从城镇 $X_i$ 通向城镇 $Y_i$。
题目保证 $X_i < Y_i$,即道路总是从编号小的城镇通向编号大的城镇。

在这个国家,黄金交易非常活跃。在第 $i$ 个城镇,可以以 $A_i$ 元的价格买入或卖出 $1\,\mathrm{kg}$ 黄金。

作为旅行商人的小明,计划执行以下操作:

1. 在 X 国内的某个城镇买入 $1\,\mathrm{kg}$ 黄金。
2. 经过若干条道路移动到另一个城镇(**卖出城镇必须与买入城镇不同**)。
3. 在该城镇卖出 $1\,\mathrm{kg}$ 黄金。

请计算小明能够获得的最大利润。
利润定义为:$($卖出黄金的价格$) - ($买入黄金的价格$)$。

输入格式

第一行包含两个整数 $N$ 和 $M$。
第二行包含 $N$ 个整数 $A_1, A_2, \dots, A_N$,表示各城镇的黄金价格。
接下来 $M$ 行,每行包含两个整数 $X_i$ 和 $Y_i$,表示一条从 $X_i$ 到 $Y_i$ 的道路。

输出格式

输出一个整数,表示最大利润。

输入输出样例

输入 #1
4 3
2 3 1 5
2 4
1 2
1 3
输出 #1
3
输入 #2
5 5
13 8 3 15 18
2 4
1 2
4 5
2 3
1 3
输出 #2
10
输入 #3
3 1
1 100 1
2 3
输出 #3
-99

说明/提示

## 说明/提示

**【样例解释 1】**

可以通过如下方式获得 $3$ 元的利润:

- 在城镇 $1$ 以 $2$ 元买入黄金。
- 移动路径:城镇 $1 \to$ 城镇 $2 \to$ 城镇 $4$。
- 在城镇 $4$ 以 $5$ 元卖出黄金。
- 利润为 $5 - 2 = 3$。

**【样例解释 2】**

可以通过如下方式获得 $10$ 元的利润:

- 在城镇 $2$ 以 $8$ 元买入黄金。
- 移动路径:城镇 $2 \to$ 城镇 $4 \to$ 城镇 $5$。
- 在城镇 $5$ 以 $18$ 元卖出黄金。
- 利润为 $18 - 8 = 10$。

**【样例解释 3】**

请注意,答案可能为负数(如果无论如何买卖都亏本,也要输出亏损最少的值)。在此例中,只能从城镇 $2$ 到城镇 $3$,利润为 $1 - 100 = -99$。

**【数据范围】**

- $2 \le N \le 2 \times 10^5$
- $1 \le M \le 2 \times 10^5$
- $1 \le A_i \le 10^9$
- $1 \le X_i < Y_i \le N$
- 保证无重边,且图为有向无环图(DAG)。
上一题 去做题 下一题