#7165. 太空旅行(特招)

    ID: 7165 Type: Default 2000ms 256MiB Tried: 2 Accepted: 1 Difficulty: 10 Uploaded By: Tags>图结构强连通分量动态规划图论NOIP2009

太空旅行(特招)

题目背景

AiraKeq 正驾驶飞船穿越 C 星系。summerrain 已经先一步抵达了 nn 号星球,正等着和他会合。

题目描述

C 星系有 nn 颗星球和 mm 条航线。任意两颗星球之间至多有一条直接航线,双向航线也只算一条。航线可能是单向的,也可能是双向的。

同一颗星球上,星石的买入价和卖出价相同;不同星球的价格可能不同。

AiraKeq 从 11 号星球出发,在 nn 号星球结束旅行。旅途中可以多次经过同一颗星球,也不要求走遍所有星球。

他想用飞船上的积蓄做一笔小买卖:先在某个星球买入一块星石,之后在另一颗星球卖出,赚取差价,好给 summerrain 买一份礼物。他最多只能进行一次交易,也可以选择不交易。

给出所有星球的星石价格和航线信息,求 AiraKeq 能获得的最大收益。

输入格式

第一行两个正整数 n,mn,m。

第二行 nn 个正整数,依次表示 11 到 nn 号星球的星石价格。

接下来 mm 行,每行三个正整数 x,y,zx,y,z:

  • z=1z=1:存在一条从 xx 到 yy 的单向航线;
  • z=2z=2:xx 与 yy 之间存在一条双向航线。

输出格式

输出一个整数,表示最大收益。如果不进行交易,输出 00。

样例

5 5
4 3 5 6 1
1 2 1
1 4 1
2 3 2
3 5 1
4 5 2
5

样例说明

从 11 号星球出发,经 22、33 号星球到达 55 号星球:在 22 号星球以 33 买入,在 33 号星球以 55 卖出,收益为 22。

走 1→4→5→4→51 \to 4 \to 5 \to 4 \to 5:在 55 号星球以 11 买入,第二次到达 44 号星球时以 66 卖出,收益为 55。

数据范围

1≤n≤1000001 \le n \le 100000,1≤m≤5000001 \le m \le 500000,1≤x,y≤n1 \le x,y \le n,1≤z≤21 \le z \le 2,每颗星球的星石价格不超过 100100。

保证 11 号星球可以到达 nn 号星球。


题目来源:NOIP 2009 提高组。