问题 5231 --拆解玩具

5231: 拆解玩具★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 18  解决: 13
[提交][状态][命题人:]

题目描述

儿童节那天,妈妈送给明明童鞋一个玩具作为礼物,爱钻研的明明童鞋迫不及待地想要将玩具拆解开,以便好好研究玩具的构造。当然,拆解玩具是需要耗费能量的哈。

已知玩具由n个零件和m根绳子组成。每根绳子连接两个零件,任意两个零件最多由一根绳子连接。要把玩具拆开,明明童鞋必须把所有的零件都拆下来。明明童鞋一次可以拆除一个零件,每拆除一个零件需要消耗一定的能量。我们定义第i部分的能量值为vi。如果拆除第i个零件(即将第i个零件从玩具中取下),明明需要花费vf1 + vf2 +…+ vfk的能量值,其中f1, f2…, fk是直接和第i个零件相连,且没有从玩具中取下的哪些零件,vf1, vf2,… ,vfk即为f1, f2…, fk对应的能量值。

    请编程帮助明明找出移除所有n个零件所需的最小总能量是多少。

输入

第一行包含两个整数nm(1≤n≤1000;0≤m≤2000)

第二行包含n个整数:v1, v2vn(0≤vi≤105),表示玩具的n个零件对应的能量值。

接下来是m行,每行两个整数xiyi,表示第xi零件和第yi零件之间有一根绳子相连接(1≤xi, yi≤n;xi≠yi)

所有的零件按照从1n顺序编号。

输出

一个整数,表示明明拆除玩具的所有n个零件所需要花费的最小能量值。
样例输入
Copy
4 3
10 20 30 40
1 4
1 2
2 3
样例输出
Copy
40

提示

在测试样例中,可以先解开2 3连接的绳子,将零件3取出,消耗v2能量(20),再解开1 4连接的绳子,将零件4取出,消耗v1能量(10),然后解开1 2连接的绳子,将零件3取出,消耗v1能量(10),最后取出零件1(消耗0能量,因为此时没有其他零件和零件1相连接),总消耗为:20+10+10=40。

来源

[提交][状态]