时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
黄渡理工学院在校园内投放了若干共享单车。但是,同学们常常骑车外出,而不怎么骑车回寝室,一段时间过后,校园内的单车就分布得非常不均匀了。于是,每隔一段时间,自行车管理员就需要重新调度一下共享单车,使得各个投放点的单车数量相等。
黄渡理工学院可以视为一个n个点、m条边的无向图。每个点初始都有若干辆自行车。自行车管理员通过第i条边移动一辆自行车,需要花费

的代价,自行车管理员想要让Miaoyao编写一个程序,求出让每个点上自行车数量相等所需的最小代价。但是Miaoyao太菜了,只好求助于你了。
输入描述:
第一行一个整数T,表示数据组数。
对于每一组数据:
第一行两个整数n, m,表示点的数量与边的数量
第二行n个整数,第i个整数
表示第i个点初始的自行车数量,
接下去m行,每行三个整数u,v,w,表示一条从u到v的无向边,边权为w。
保证
输出描述:
对每组数据,输出一行,表示所需的最小代价(无解输出-1)
示例1
输入
复制
1
3 3
5 2 2
1 2 2
2 3 1
1 3 4
备注:
保证
