#include<iostream>
#include<algorithm>
using namespace std;
int n,p,fa[1200000],c[1200000],m = 1200000,sum;
struct Edge{
int l,r,v;
}edge[1200000];
bool cmp(Edge x, Edge y){
return x.v < y.v;
}
int find(int x){
if(fa[x]!=x) fa[x]= find(fa[x]);
return fa[x];
}
int con(int x,int y){
fa[find(y)] = find(x);
}
int main(){
cin>>n>>p;
for(int i = 1; i <= n; i++){
fa[i] = i;
cin>>c[i];
m = min(m,c[i]);
}
for(int i = 1; i <= p; i++){
cin>>edge[i].l>>edge[i].r>>edge[i].v;
edge[i].v = c[edge[i].l] + c[edge[i].r] + edge[i].v * 2;
}
sort(edge + 1, edge + p + 1, cmp);
for(int i = 1; i <= p; i++){
int s = edge[i].l;
int t = edge[i].r;
if(find(s) != find(t)){
con(s,t);
sum += edge[i].v;
}
}
cout<<sum + m;
return 0;
}
样例没问题,但全RE了