该出奇兵了
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

 A国与B国爆发了全面战争,作为A国指挥官的你现在需要处理如下的问题。
已知B国的城邦共有N个,每个城邦都有一定的士兵,第i个城邦的士兵数量为a_{i}。城邦与城邦之间总共有M条道路连接。根据战场上的情报网你得知B国有一个名为联防体的防御体系,每个联防体包含一个或者多个城邦。一个联防体的攻克难度为该联防体内士兵数量之和的平方。组建联防体有严格的要求,一个城邦最多只能属于一个联防体,并且组成联防体的城邦必须可以通过道路相互到达
B国会按照最优策略组建自己的联防体,使得联防体的攻克难度的总和最大。现在作为A国指挥官的你有一次发动奇袭的机会,可以没有代价的摧毁一座城邦以及和城邦直接相连的道路,如果这次奇袭能最大限度的降低B国联防体的攻克难度,你的国家将有可能取得胜利!请你计算出发动奇袭后,B国联防体的攻克难度总和最低值是多少。

输入描述:

第⼀⾏输入两个整数 NM(1≤N≤10^5, 0≤M≤2*10^5)
之后的 M ⾏,每⾏输入两个整数,uv,表示第u个城邦和第v个城邦之间有道路相连。(1≤u,v≤N, u≠v)
最后一行输入N个整数,a_{1},a_{2},a_{3}......a_{N}(1≤a_{i}≤10^5)

输出描述:

输出经过一次奇袭后,B国联防体的攻克难度总和的最低值。
示例1

输入

复制
6 6
1 2
2 4
5 2
1 3
6 5
4 1
1 1 4 5 1 4

输出

复制
121

备注: