#include<iostream>
#include<vector>
#include<cstdio>
#define max 10000000
#define INF 100000000
using namespace std;
vector<int> queue;
vector<int> adj[max];
vector<int> connected_comp (max,0);
vector<int> tax;
vector<int> min_tax;
int n,e,min_count=0,min_val;
void enqueue(int val) {
queue.push_back(val);
}
int dequeue(){
int first_ele=queue[0];
queue.erase(queue.begin());
return first_ele;
}
void print_queue(){
int i;
for(i=0;i<queue.size();i++)
cout<<queue[i]<<", ";
cout<<endl;
}
void createAdjecenyList(int u,int v){
adj[u].push_back(v);
adj[v].push_back(u);
}
void printAdjecenyList(){
int i,j;
for(i=1;i<=n;i++){
cout<<i;
for(j=0;j!=adj[i].size();j++){
cout<<" -> "<<adj[i][j];
}
cout<<endl;
}
}
int find_starting_vertex(int start){
int i;
if(start >= n) return -1;
else {
for(i=start+1;i<=n;i++){
if(connected_comp[i]==0)
return i;
}
}
return -1;
}
void bfs(int v,int index){
int t,i,u,j,minimum;
enqueue(v);
connected_comp[v]=index;
if(tax[v]>0) minimum=tax[v];
else minimum=INF;
while(queue.size()>0){
t = dequeue();
for(i=0;i!=adj[t].size();i++){
u=adj[t][i];
if(connected_comp[u]==0){
connected_comp[u]=index;
if(minimum>tax[u] && tax[u]>0) minimum=tax[u];
enqueue(u);
}
}
}
if(minimum != INF && minimum != 0)
min_tax.push_back(minimum);
if(min_val>minimum) min_val=minimum;
}
int explore_conn_comp(){
int start =find_starting_vertex(0);
int index=1;
while(1 ) {
bfs(start,index);
start =find_starting_vertex(start);
if(start==-1) break;
index++;
}
return index;
}
int main(){
int u,v,i,number,c,sum,taxsize;
min_val=INF;
scanf("%d",&n);
scanf("%d",&e);
while(e--) {
scanf("%d %d",&u,&v);
createAdjecenyList(u,v);
}
tax.push_back(0);
for(i=1;i<=n;i++) {
scanf("%d",&c);
tax.push_back(c);
}
number=explore_conn_comp();
// for(i=0;i<min_tax.size();i++) printf("%d ",min_tax[i]);
// printf("\n%d\n",min_val);
taxsize=min_tax.size();
sum=0;
if(number==1) printf("0\n");
else if(number>taxsize) printf("-1\n");
else { for(i=0;i<min_tax.size();i++) sum=sum+min_tax[i]+min_val;
printf("%d\n",sum-2*min_val);
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHZlY3Rvcj4KI2luY2x1ZGU8Y3N0ZGlvPgojZGVmaW5lIG1heCAxMDAwMDAwMAojZGVmaW5lIElORiAxMDAwMDAwMDAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZlY3RvcjxpbnQ+IHF1ZXVlOwp2ZWN0b3I8aW50PiBhZGpbbWF4XTsKdmVjdG9yPGludD4gY29ubmVjdGVkX2NvbXAgKG1heCwwKTsKdmVjdG9yPGludD4gdGF4Owp2ZWN0b3I8aW50PiBtaW5fdGF4OwoKaW50IG4sZSxtaW5fY291bnQ9MCxtaW5fdmFsOwoKdm9pZCBlbnF1ZXVlKGludCB2YWwpIHsKICAgICBxdWV1ZS5wdXNoX2JhY2sodmFsKTsKfQppbnQgZGVxdWV1ZSgpewogICAgIGludCBmaXJzdF9lbGU9cXVldWVbMF07CiAgICAgcXVldWUuZXJhc2UocXVldWUuYmVnaW4oKSk7CiAgICAgcmV0dXJuIGZpcnN0X2VsZTsKfQoKdm9pZCBwcmludF9xdWV1ZSgpewogIGludCBpOwogIGZvcihpPTA7aTxxdWV1ZS5zaXplKCk7aSsrKQogICAgY291dDw8cXVldWVbaV08PCIsICAiOyAgICAgCiAgY291dDw8ZW5kbDsKfQoKdm9pZCBjcmVhdGVBZGplY2VueUxpc3QoaW50IHUsaW50IHYpewogICAgIGFkalt1XS5wdXNoX2JhY2sodik7CiAgICAgICBhZGpbdl0ucHVzaF9iYWNrKHUpOwp9CnZvaWQgcHJpbnRBZGplY2VueUxpc3QoKXsKICAgICBpbnQgaSxqOwogICAgIGZvcihpPTE7aTw9bjtpKyspewogICAgICAgICBjb3V0PDxpOwogICAgICAgICBmb3Ioaj0wO2ohPWFkaltpXS5zaXplKCk7aisrKXsKICAgICAgICAgICAgIGNvdXQ8PCIgLT4gIjw8YWRqW2ldW2pdOwogICAgICAgICB9ICAgICAgICAgIAogICAgICAgICBjb3V0PDxlbmRsOyAgICAgICAKICAgICB9Cn0KCmludCBmaW5kX3N0YXJ0aW5nX3ZlcnRleChpbnQgc3RhcnQpewogICAgaW50IGk7CiAgICBpZihzdGFydCA+PSBuKSByZXR1cm4gLTE7CiAgICBlbHNlIHsKICAgICAgZm9yKGk9c3RhcnQrMTtpPD1uO2krKyl7CiAgICAgICAgIGlmKGNvbm5lY3RlZF9jb21wW2ldPT0wKSAKICAgICAgICAgICByZXR1cm4gaTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIC0xOwp9Cgp2b2lkIGJmcyhpbnQgdixpbnQgaW5kZXgpewogIGludCB0LGksdSxqLG1pbmltdW07CiAgZW5xdWV1ZSh2KTsKICBjb25uZWN0ZWRfY29tcFt2XT1pbmRleDsKICBpZih0YXhbdl0+MCkgbWluaW11bT10YXhbdl07CiAgICBlbHNlIG1pbmltdW09SU5GOwogIHdoaWxlKHF1ZXVlLnNpemUoKT4wKXsKICAgICAgICB0ID0gZGVxdWV1ZSgpOyAgICAgIAogICAgICAgIGZvcihpPTA7aSE9YWRqW3RdLnNpemUoKTtpKyspewogICAgICAgICAgIHU9YWRqW3RdW2ldOwogICAgICAgICAgIGlmKGNvbm5lY3RlZF9jb21wW3VdPT0wKXsKICAgICAgICAgICAgICAgY29ubmVjdGVkX2NvbXBbdV09aW5kZXg7CiAgICAgICAgICAgICAgIGlmKG1pbmltdW0+dGF4W3VdICYmIHRheFt1XT4wKSBtaW5pbXVtPXRheFt1XTsKICAgICAgICAgICAgICAgZW5xdWV1ZSh1KTsKICAgICAgICAgICB9ICAgICAgICAgICAgICAKICAgICAgICB9CiAgfQogIGlmKG1pbmltdW0gIT0gSU5GICYmIG1pbmltdW0gIT0gMCkgCiAgICAgbWluX3RheC5wdXNoX2JhY2sobWluaW11bSk7CiAgICAgaWYobWluX3ZhbD5taW5pbXVtKSBtaW5fdmFsPW1pbmltdW07Cn0KCmludCBleHBsb3JlX2Nvbm5fY29tcCgpewogICAgIGludCBzdGFydCA9ZmluZF9zdGFydGluZ192ZXJ0ZXgoMCk7CiAgICAgaW50IGluZGV4PTE7CiAgICAgd2hpbGUoMSApIHsKICAgICAgICAgIGJmcyhzdGFydCxpbmRleCk7CiAgICAgICAgICBzdGFydCA9ZmluZF9zdGFydGluZ192ZXJ0ZXgoc3RhcnQpOwogICAgICAgICAgaWYoc3RhcnQ9PS0xKSBicmVhazsKICAgICAgICAgIGluZGV4Kys7CiAgICAgfQogICAgIHJldHVybiBpbmRleDsKfQppbnQgbWFpbigpewogICAgaW50IHUsdixpLG51bWJlcixjLHN1bSx0YXhzaXplOwogICAgbWluX3ZhbD1JTkY7CiAgICBzY2FuZigiJWQiLCZuKTsKICAgIHNjYW5mKCIlZCIsJmUpOwogICAgd2hpbGUoZS0tKSB7CiAgICAgICBzY2FuZigiJWQgJWQiLCZ1LCZ2KTsKICAgICAgIGNyZWF0ZUFkamVjZW55TGlzdCh1LHYpOyAgCiAgICB9CiAgICB0YXgucHVzaF9iYWNrKDApOwogICAgZm9yKGk9MTtpPD1uO2krKykgewogICAgICAgc2NhbmYoIiVkIiwmYyk7CiAgICAgICB0YXgucHVzaF9iYWNrKGMpOwogICAgfQogICAgbnVtYmVyPWV4cGxvcmVfY29ubl9jb21wKCk7CiAgLy8gIGZvcihpPTA7aTxtaW5fdGF4LnNpemUoKTtpKyspIHByaW50ZigiJWQgICIsbWluX3RheFtpXSk7CiAgICAKLy8gICAgcHJpbnRmKCJcbiVkXG4iLG1pbl92YWwpOwogICB0YXhzaXplPW1pbl90YXguc2l6ZSgpOwogICAgc3VtPTA7CiAgICBpZihudW1iZXI9PTEpIHByaW50ZigiMFxuIik7CiAgICBlbHNlIGlmKG51bWJlcj50YXhzaXplKSBwcmludGYoIi0xXG4iKTsKICAgIGVsc2UgIHsgICBmb3IoaT0wO2k8bWluX3RheC5zaXplKCk7aSsrKSBzdW09c3VtK21pbl90YXhbaV0rbWluX3ZhbDsKICAgICAgICAgcHJpbnRmKCIlZFxuIixzdW0tMiptaW5fdmFsKTsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==