小红的图上加边
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\,\,\,\,\,\,\,\,\,\,小红有一张 n 个点 m 条边的无向图,每个节点的权值是 a_i
\,\,\,\,\,\,\,\,\,\,现在小红希望加边把这个图连成连通图,每次连接的代价是新形成的联通块的最大元素值,小红想知道最小需要消耗多少代价可以把这个图连成连通的。

输入描述:

\,\,\,\,\,\,\,\,\,\,第一行输入两个整数nm\ (1 \leq n \leq 10^5; 0 \leq m \leq 10^5) 表示点数和边数。
\,\,\,\,\,\,\,\,\,\,第二行输入 n 个整数 a_1,a_2,\dots,a_n\ (1 \leq a_i \leq 10^9) 表示每个节点的权值。
\,\,\,\,\,\,\,\,\,\,接下来 m 行,第 i 行输入两个整数 u_iv_i\ (1 \leq u_i,v_i \leq n) 表示无向图上第 i 条边连接节点 u_iv_i ,保证没有重边。

输出描述:

\,\,\,\,\,\,\,\,\,\,在一行上输出一个整数,表示最小需要消耗的代价。

示例1

输入

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

输出

复制
9

说明

先加上 (1, 4) 这条边,代价是 4,然后加上 (1, 5) 这条边,代价是 5,总代价是 9