AT_past19_m DAG ゲーム

题目描述

给定一个有 $N$ 个顶点、$M$ 条边的简单有向图。顶点编号为 $1$ 到 $N$,边编号为 $1$ 到 $M$。第 $j$ 条边从顶点 $U_j$ 指向顶点 $V_j$。每个顶点有一个整数属性 point,第 $i$ 个顶点的 point 为 $P_i$。另外,每条边有一个实数属性 decay,取值范围为 $0$ 到 $1$,第 $j$ 条边的 decay 为 $W_j$。保证该图不存在有向环(即不存在从某个顶点 $i$ 沿着若干条边回到顶点 $i$ 的路径)。 高桥将在这个图上玩一个游戏。起初,顶点 $1$ 上有一个棋子,高桥的分数为 $0$。他进行如下操作,将棋子移动到顶点 $N$,同时累计分数。 1. 设当前棋子所在顶点编号为 $i$。将顶点 $i$ 的 point 值 $P_i$ 加到分数上。 2. 如果 $i=N$,则**成功**结束游戏。 3. 如果 $i$ 没有出边,则**失败**结束游戏。否则,从 $i$ 出发的边中选择一条。 4. 设选中的是第 $j$ 条边。将所有顶点的 point 值都乘以该边的 decay 值,即对每个 $i$ $(1\leq i\leq N)$,$P_i\leftarrow P_i\times W_j$。 5. 将棋子移动到顶点 $V_j$,跳转回第 1 步。 判断他能否成功结束游戏。如果可以,求游戏过程中分数的最大可能值。

输入格式

输入按以下格式给出: > $N$ $M$ > $P_1$ $P_2$ $\dots$ $P_N$ > $U_1$ $V_1$ $W_1$ > $U_2$ $V_2$ $W_2$ > $\vdots$ > $U_M$ $V_M$ $W_M$

输出格式

如果可以成功结束游戏,输出分数的最大可能值;否则输出 `-1`。如果能成功,答案的绝对误差或相对误差不超过 $10^{-6}$ 即视为正确。

说明/提示

### 样例解释 1 我们用 $P$ 表示 $(P_1, P_2, P_3, P_4)$。初始时 $P=(2,5,3,1)$。 若依次走 $1\rightarrow 3\rightarrow 4$,过程如下: 1. 把顶点 $1$ 的 point $P_1=2$ 加到分数上。 2. 从 $1$ 出发的边里,选第 $1$ 条边。 3. 所有顶点的 point 都乘以该边的 decay $W_1=0.5$,此时 $P=(1,2.5,1.5,0.5)$。 4. 棋子移到顶点 $3$。 5. 把顶点 $3$ 的 point $P_3=1.5$ 加到分数上。 6. 从 $3$ 出发的边里,选第 $4$ 条边。 7. 所有顶点的 point 都乘上该边的 decay $W_4=0.5$,此时 $P=(0.5,1.25,0.75,0.25)$。 8. 棋子移到顶点 $4$。 9. 把顶点 $4$ 的 point $P_4=0.25$ 加到分数上。 10. 游戏成功结束。 此时最终分数为 $2+1.5+0.25=3.75$,为最大可能值。 ### 样例解释 2 无法成功结束游戏。 ### 约束条件 - $N, M, P_i, U_j, V_j$ 均为整数。 - $2\leq N \leq 10^5$ - $1\leq M\leq 10^5$ - $1\leq P_i\leq 10^4$ - $U_j\neq V_j$ - $(U_j,V_j)\neq (U_k,V_k) \quad(j\neq k)$ - $0\leq W_j\leq 1$ - $W_j$ 是 $10^{-6}$ 的倍数,小数点后六位。 - 给定的图无有向环。 由 ChatGPT 5 翻译