#SFJSJJZN3213. 四叶草魔杖

    ID: 900 传统题 1000ms 128MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>来源算法竞赛进阶指南图论最小生成树压缩状态动态规划6

四叶草魔杖

题目描述

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

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

第 i 颗宝石的能量是 AiA_i

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

保证Ai=0\sum A_i = 0

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

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

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

输入格式

第一行两个整数N、M。

第二行 N 个整数AiA_i

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

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

输出格式

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

数据范围

2N162 \le N \le 16, 0MN(N1)/20 \le M \le N*(N-1)/2, 0pi,qi<N0 \le p_i,q_i < N, 1000Ai1000-1000 \le A_i \le 1000, 0Ti10000 \le T_i \le 1000

输入样例:

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

输出样例:

30

来源

  • 《算法竞赛进阶指南》
  • acwing 可能含有视频讲解