U463989 小Y之捡树叶

题目背景

小 Y 和这群人打了会儿篮球之后,意外的发现篮球场的旁边有一小树林,正好,其中有一人有收集树叶的癖好。于是小 Y 便跟随着大部队到树林里捡树叶,结果大家一致同意让小 Y 当苦力,于是小 Y 一气之下气了一下。

题目描述

这个小树林里面一共有 $n$ 堆树叶,这 $n$ 堆树叶由 $m$ 条有向边连接,小 Y 一开始在编号为 $p$ 的树叶堆。每一堆树叶都有属于自己的重量,第 $i$ 堆树叶的重量为 $a_{i}$。 接下来小 Y 要把这 $n$ 堆树叶合并成一堆树叶给那个人。 我们定义和并若干个树叶堆的代价为:这若干个 **树叶堆的重量总和** 乘以所要经过这若干个树叶堆的 **路径长度之和**。(注:不一定经过一个树叶堆,就必须要合并这个树叶堆) 合并完若干个树叶堆之后,这若干个树叶堆可以看做一个点(可以理解成强连通的缩点),而这个点的重量就是这若干个树叶堆的重量之和。随后小 Y 就得从这个点出发,重新合并了。 不过众所周知,小 Y 是很懒的,所以请求出小 Y 最小花费的代价,不过有可能答案很大,所以说请对答案 $10^9 + 7$ 取模。

输入格式

第一行为 $n,m,p$。 第二行,有 $n$ 个数代表每个树叶堆的重量。 接下来的 $m$ 行,每一行有三个数,分别代表一个有向边的起点、终点和长度。

输出格式

一个整数代表最小花费的代价。

说明/提示

$1 \le p \le n \le 100$ $1 \le m \le 1000$ 重量和边权绝对值小于 $10^9$。