#include <bits/stdc++.h>
using namespace std;
#define pb push_back
int bfs(int start,bool *vis,vector<int>*v,int *price)//finding the min price in a graph
{ //here we have several disjoint graphs
int mini=INT_MAX;
queue<int>qu;
qu.push(start);
vis[start]=true;
while(!qu.empty())
{
int u=qu.front();
qu.pop();
mini=min(mini,price[u]);
for(int i=0;i<v[u].size();i++)
{
if(!vis[v[u][i]])
{
qu.push(v[u][i]);
vis[v[u][i]]=true;
}
}
}
return mini;
}
int main() {
int n,m;
scanf("%d%d",&n,&m);
vector<int>v[n];
for(int i=0;i<m;i++)
{int a,b;
scanf("%d%d",&a,&b);
v[a-1].pb(b-1);
v[b-1].pb(a-1);
}
int price[n];
for(int i=0;i<n;i++)
{
scanf("%d",&price[i]);
if(price[i]<0)
price[i]=INT_MAX;
}
vector<int>mini;
bool vis[n];
memset(vis,false,sizeof(vis));
for(int i=0;i<n;i++)
{
if(!vis[i])
mini.pb(bfs(i,vis,v,price));
}
sort(mini.begin(),mini.end());
if(mini[mini.size()-1]==INT_MAX)
cout<<-1;
else{long long sum=0;
for(int i=1;i<mini.size();i++)
{
sum+=(mini[i]+mini[0]);
}
cout<<sum;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgcGIgcHVzaF9iYWNrCmludCBiZnMoaW50IHN0YXJ0LGJvb2wgKnZpcyx2ZWN0b3I8aW50Pip2LGludCAqcHJpY2UpLy9maW5kaW5nIHRoZSBtaW4gcHJpY2UgaW4gYSBncmFwaAp7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaGVyZSB3ZSBoYXZlIHNldmVyYWwgZGlzam9pbnQgZ3JhcGhzCglpbnQgbWluaT1JTlRfTUFYOwoJcXVldWU8aW50PnF1OwoJcXUucHVzaChzdGFydCk7Cgl2aXNbc3RhcnRdPXRydWU7Cgl3aGlsZSghcXUuZW1wdHkoKSkKCXsKCQlpbnQgdT1xdS5mcm9udCgpOwoJCXF1LnBvcCgpOwoJCW1pbmk9bWluKG1pbmkscHJpY2VbdV0pOwoJCWZvcihpbnQgaT0wO2k8dlt1XS5zaXplKCk7aSsrKQoJCXsKCQkJaWYoIXZpc1t2W3VdW2ldXSkKCQkJewoJCQkJcXUucHVzaCh2W3VdW2ldKTsKCQkJCXZpc1t2W3VdW2ldXT10cnVlOwoJCQl9CgkJfQoJfQoJcmV0dXJuIG1pbmk7Cn0KaW50IG1haW4oKSB7CgogICBpbnQgbixtOwogICBzY2FuZigiJWQlZCIsJm4sJm0pOwogICB2ZWN0b3I8aW50PnZbbl07CiAgIGZvcihpbnQgaT0wO2k8bTtpKyspCiAgIHtpbnQgYSxiOwogICAJc2NhbmYoIiVkJWQiLCZhLCZiKTsKICAgCXZbYS0xXS5wYihiLTEpOwogICAJdltiLTFdLnBiKGEtMSk7CiAgIH0KICAgaW50IHByaWNlW25dOwogICBmb3IoaW50IGk9MDtpPG47aSsrKQogICB7CiAgIAlzY2FuZigiJWQiLCZwcmljZVtpXSk7CiAgIAlpZihwcmljZVtpXTwwKQogICAJcHJpY2VbaV09SU5UX01BWDsKICAgfQogICB2ZWN0b3I8aW50Pm1pbmk7CiAgIGJvb2wgdmlzW25dOwogICBtZW1zZXQodmlzLGZhbHNlLHNpemVvZih2aXMpKTsKICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgewogICAJaWYoIXZpc1tpXSkKICAgCW1pbmkucGIoYmZzKGksdmlzLHYscHJpY2UpKTsKICAgfQogICBzb3J0KG1pbmkuYmVnaW4oKSxtaW5pLmVuZCgpKTsKICAgaWYobWluaVttaW5pLnNpemUoKS0xXT09SU5UX01BWCkKICAgY291dDw8LTE7CiAgIGVsc2V7bG9uZyBsb25nIHN1bT0wOwogICBmb3IoaW50IGk9MTtpPG1pbmkuc2l6ZSgpO2krKykKICAgewogICAJc3VtKz0obWluaVtpXSttaW5pWzBdKTsKICAgfQogICAJY291dDw8c3VtOwogICB9CglyZXR1cm4gMDsKfQ==