#4461. 氪币

氪币

题目描述

徐老师最近在玩一个手游,游戏中最近新出了一个活动,击杀活动副本 BOSSBOSS 可以获得不同种类的兑换币

为了强行提高用户游戏时长,游戏中的兑换币分为:"金币","银币","铜币","纪念币"...以及一种特殊兑换币,"氪币"

字面意思,就是玩家可以花钱充值来购买 "氪币",活动中一共 nn 种兑换币,为了方便描述,我们将其分别编号为 1n1 \dots n,其中 "氪币" 的编号为 11

每一种兑换币都拥有自己的兑换界面,可以兑换非常多种类的奖励。

徐老师刷了几天活动兑换了一部分奖励,但是他想要的奖励实在是太多而且太杂了,并且刷活动的时间过长,实在是太累了。

于是他发现,原来当玩家充值购买 "氪币" 以后会自动开通兑换币转换功能!

兑换币转换功能共有 mm 条转换规则,其中第 ii 条转换规则可以用三个数字 xi,yi,zix_i,y_i,z_i 来描述,表示玩家可以将 11xix_i 号兑换币转换成 10zi10^{z_i}yiy_i 号兑换币。

例如 11 22 11 表示可以用 1111 号兑换币转换成 101022 号兑换币。

当然, ziz_i 可以是负数,例如 11 22 1-1 表示 1111 号兑换币可以转换成 101=0.110^{-1} = 0.122 号兑换币。

现在徐老师已经选好了每个兑换界面他分别需要的奖励,并计算好了每种兑换币的需求量。

他想知道他最少需要购买多少 "氪币" 才能兑换到他想要的所有东西?

P.S. 题目保证 "氪币" 一定能直接或间接转换成任意兑换币,并且不存在任意一种货币可以间接或者直接的转换成数量更多的同种货币。

输入格式

输入第一行包含两个整数 n,mn,m 表示有 nn 种货币,mm 条转换规则。

接下来一行包含 nn 个数字,表示徐老师需要每种兑换币的数量 aia_i

接下来 mm 行,每行三个整数 xi,yi,zix_i,y_i,z_i 表示一条兑换币转换规则。

输出格式

输出徐老师最少需要购买的 "氪币" 数量,这个数量可能是浮点数,请保留到小数点后 66 位。

数据范围

对于 10%10\% 的数据,所有兑换关系满足 z=0z=0

对于再 30%30\% 的数据,n100n \leq 100

对于 20%20\% 的数据,答案不超过 10910^9

对于 30%30\% 的数据,m=n1m=n−1

对于 60%60\% 的数据,所有兑换关系满足 z0z \leq 0

对于 100%100\% 的数据,$n \leq 10^5, m \leq 2 * 10^5, 0 \leq a_i \leq 2147483647, −1000 \leq z \leq 1000$

特别的保证:答案不会超过 101000010^{10000}

3 2
1 1 1
1 2 1
2 3 1
1.110000