#3923. 四叶草魔杖

    ID: 3923 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>动态规划状态压缩DP树结构生成树图结构图论最小生成树压缩状态动态规划算法竞赛进阶指南

四叶草魔杖

题目描述

魔杖护法 Freda 融合了四件武器,于是魔杖顶端缓缓地生出了一棵四叶草,四片叶子幻发着淡淡的七色光。

圣剑护法 rainbow 取出了一个圆盘,圆盘上镶嵌着 NN 颗宝石,编号为 0∼NN−1。

ii 颗宝石的能量是 AiA_i

如果 A+iA+i>0,表示这颗宝石能量过高,需要把Ai A_i 的能量传给其它宝石;如果 AiA_i<0,表示这颗宝石的能量过低,需要从其它宝石处获取 −AiA_i 的能量。

保证Ai \sum A_i=0。

只有当所有宝石的能量均相同时,把四叶草魔杖插入圆盘中央,才能开启超自然之界的通道。

不过,只有 MM 对宝石之间可以互相传递能量,其中第 ii 对宝石之间无论传递多少能量,都要花费 TiT_i 的代价。

探险队员们想知道,最少需要花费多少代价才能使所有宝石的能量都相同?

输入格式

第一行两个整数NM N、M

第二行 NN 个整数 AiA_i

接下来M M 行每行三个整数pi,qi,Ti p_i,q_i,T_i,表示在编号为 pip_iqiq_i 的宝石之间传递能量需要花费Ti T_i 的代价。

数据保证每对piqi p_i、q_i 最多出现一次。

输出格式

输出一个整数表示答案,无解输出 Impossible

样例

3 3
50 -20 -30
0 1 10
1 2 20
0 2 100
30

数据范围

$2≤N≤16,0≤M≤N∗(N−1)/2, 0≤p_i,q_i<N,−1000≤A_i≤1000,0≤T_i≤1000$

来源

  • 算法竞赛进阶指南