#include<iostream>
#include<cstdio>
#include<queue>
#include<string>
#define FOR(i,a,b) for(int i=a;i<b;i++)
#define INFI 1000000000
#include <map>
#include<set>
using namespace std;
int N,M;
vector<int>v[100005];
int tax[100005];
bool visit[100005];
int minval,last,city;
int scc[100005];
void DFS(int u){
visit[u]=true;
for(int i=0;i<v[u].size();i++){
int k=v[u][i];
if(!visit[k])DFS(k);
}
city++;
if(tax[u]>0 && tax[u]<minval)minval=tax[u];
}
bool DFS_visit(){
FOR(i,1,N+1){
if(!visit[i]){
minval=INFI;
city=0;
DFS(i);
if(minval==INFI && city<N){
printf("-1\n"); return false;
}
scc[last++]=minval;
}
}
// if(minval==INFI){
// printf("-1\n"); return false;
// }
// scc[last++]=minval;
return true;
}
int main(){
scanf("%d%d",&N,&M);
int a,b;
FOR(i,0,M){
scanf("%d%d",&a,&b);
v[a].push_back(b);
v[b].push_back(a);
}
FOR(i,1,N+1){
scanf("%d",&tax[i]);
}
bool path=DFS_visit();
if(path==false)return 0;
minval=INFI;
long long sum=0;
FOR(i,0,last){
if(minval>scc[i])minval=scc[i];
// cout<<scc[i]<<" ";
sum+=(long long)scc[i];
}
// cout<<endl<<last<<endl;
sum+=(last-2)*minval;
printf("%lld\n",sum);
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGNzdGRpbz4KI2luY2x1ZGU8cXVldWU+CiNpbmNsdWRlPHN0cmluZz4KI2RlZmluZSBGT1IoaSxhLGIpIGZvcihpbnQgaT1hO2k8YjtpKyspCiNkZWZpbmUgSU5GSSAxMDAwMDAwMDAwCiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlPHNldD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IE4sTTsKdmVjdG9yPGludD52WzEwMDAwNV07CmludCB0YXhbMTAwMDA1XTsKYm9vbCB2aXNpdFsxMDAwMDVdOwppbnQgbWludmFsLGxhc3QsY2l0eTsKaW50IHNjY1sxMDAwMDVdOwp2b2lkIERGUyhpbnQgdSl7CiAgICB2aXNpdFt1XT10cnVlOwogICAgZm9yKGludCBpPTA7aTx2W3VdLnNpemUoKTtpKyspewogICAgICAgIGludCBrPXZbdV1baV07CiAgICAgICAgaWYoIXZpc2l0W2tdKURGUyhrKTsKICAgIH0KICAgIGNpdHkrKzsKICAgIGlmKHRheFt1XT4wICYmIHRheFt1XTxtaW52YWwpbWludmFsPXRheFt1XTsKfQpib29sIERGU192aXNpdCgpewogICAgRk9SKGksMSxOKzEpewogICAgICAgIGlmKCF2aXNpdFtpXSl7CiAgICAgICAgICAgIG1pbnZhbD1JTkZJOwogICAgICAgICAgICBjaXR5PTA7CiAgICAgICAgICAgIERGUyhpKTsKICAgICAgICAgICAgaWYobWludmFsPT1JTkZJICYmIGNpdHk8Til7CiAgICAgICAgICAgICAgICBwcmludGYoIi0xXG4iKTsgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHNjY1tsYXN0KytdPW1pbnZhbDsKICAgICAgICB9CiAgICB9Ci8vICAgIGlmKG1pbnZhbD09SU5GSSl7Ci8vICAgICAgICBwcmludGYoIi0xXG4iKTsgcmV0dXJuIGZhbHNlOwovLyAgICB9Ci8vICAgIHNjY1tsYXN0KytdPW1pbnZhbDsKICAgIHJldHVybiB0cnVlOwp9CmludCBtYWluKCl7CiAgICBzY2FuZigiJWQlZCIsJk4sJk0pOwogICAgaW50IGEsYjsKICAgIEZPUihpLDAsTSl7CiAgICAgICAgc2NhbmYoIiVkJWQiLCZhLCZiKTsKICAgICAgICB2W2FdLnB1c2hfYmFjayhiKTsKICAgICAgICB2W2JdLnB1c2hfYmFjayhhKTsKICAgIH0KICAgIEZPUihpLDEsTisxKXsKICAgICAgICBzY2FuZigiJWQiLCZ0YXhbaV0pOwogICAgfQogICAgYm9vbCBwYXRoPURGU192aXNpdCgpOwogICAgaWYocGF0aD09ZmFsc2UpcmV0dXJuIDA7CiAgICBtaW52YWw9SU5GSTsKICAgIGxvbmcgbG9uZyBzdW09MDsKICAgIEZPUihpLDAsbGFzdCl7CiAgICAgICAgaWYobWludmFsPnNjY1tpXSltaW52YWw9c2NjW2ldOwovLyAgICAgICAgY291dDw8c2NjW2ldPDwiICAiOwogICAgICAgIHN1bSs9KGxvbmcgbG9uZylzY2NbaV07CiAgICB9Ci8vICAgIGNvdXQ8PGVuZGw8PGxhc3Q8PGVuZGw7CiAgICBzdW0rPShsYXN0LTIpKm1pbnZhbDsKICAgIHByaW50ZigiJWxsZFxuIixzdW0pOwogICAgcmV0dXJuIDA7Cn0K