#include<iostream>
#include <list>
#include<cstdio>
#include<cstdlib>
#define minimum(a,b) a<b?a:b
#define MAX 123456789
using namespace std;
int *val,disjoint=0;
long long int mi,ans=0,min_all;
int read()
{
int t=0;char c;
c=getchar();
while((c<'0'||c>'9'))c=getchar();
while(c>='0'&&c<='9')
{
t=(t<<3)+(t<<1)+c-'0';
c=getchar();
}
return t;
}
class Graph
{
int V;
list<int> *adj;
void DFSUtil(int v, bool visited[]);
public:
Graph(int V);
void addEdge(int v, int w);
void DFS();
};
Graph::Graph(int V)
{
this->V = V;
adj = new list<int>[V];
val=(int *)malloc(sizeof(int)*(V));
}
void Graph::addEdge(int v, int w)
{
adj[v].push_back(w);
}
void Graph::DFSUtil(int v, bool visited[])
{
visited[v] = true;
if(val[v]>=0)
{
//printf("{ %lld %d",mi,min_all);
mi=minimum(val[v],mi);
min_all=minimum(val[v],min_all);
//printf("%lld %d }\n",mi,min_all);
}
list<int>::iterator i;
for(i = adj[v].begin(); i != adj[v].end(); ++i)
if(!visited[*i])
DFSUtil(*i, visited);
}
void Graph::DFS()
{
bool *visited = new bool[V];
for(int i = 0; i < V; i++)
visited[i] = false;
for(int i=1;i<V;i++)
{
if(visited[i]==false)
{
mi=MAX;
//printf("$%lld\n",mi);
disjoint++;
DFSUtil(i, visited);
if(mi==MAX)
{
ans=-1;
//printf("**\n");
break;
}
else
ans+=mi;
//printf("%lld**\n",ans);
}
if(ans==-1)break;
}
}
int main()
{
int n,m;
n=read();
m=read();
Graph g(n+1);
min_all=MAX;
for(int i=0;i<m;i++)
{
int a,b;
a=read();
b=read();
g.addEdge(a,b);
}
for(int i=1;i<=n;i++)
scanf("%d",&val[i]);
if(n==1)
{
printf("0\n");
}
else
{
g.DFS();
if(disjoint==1)
{
printf("0\n");
}
else
{
if(ans==-1)
printf("-1\n");
else
{
disjoint-=2;
ans+=disjoint*min_all;
printf("%lld\n",ans);
}
}
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlIDxsaXN0PgojaW5jbHVkZTxjc3RkaW8+CiNpbmNsdWRlPGNzdGRsaWI+CiNkZWZpbmUgbWluaW11bShhLGIpIGE8Yj9hOmIKI2RlZmluZSBNQVggMTIzNDU2Nzg5Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50ICp2YWwsZGlzam9pbnQ9MDsKbG9uZyBsb25nIGludCBtaSxhbnM9MCxtaW5fYWxsOwoKCmludCByZWFkKCkKewogICAgaW50IHQ9MDtjaGFyIGM7CiAgICBjPWdldGNoYXIoKTsKICAgIHdoaWxlKChjPCcwJ3x8Yz4nOScpKWM9Z2V0Y2hhcigpOwogICAgd2hpbGUoYz49JzAnJiZjPD0nOScpCiAgICB7CiAgICAgICAgdD0odDw8MykrKHQ8PDEpK2MtJzAnOwogICAgICAgIGM9Z2V0Y2hhcigpOwogICAgfQogICAgcmV0dXJuIHQ7Cn0KCmNsYXNzIEdyYXBoCnsKICAgIGludCBWOwogICAgbGlzdDxpbnQ+ICphZGo7CiAgICB2b2lkIERGU1V0aWwoaW50IHYsIGJvb2wgdmlzaXRlZFtdKTsKcHVibGljOgogICAgR3JhcGgoaW50IFYpOwogICAgdm9pZCBhZGRFZGdlKGludCB2LCBpbnQgdyk7CiAgICB2b2lkIERGUygpOwp9OwoKR3JhcGg6OkdyYXBoKGludCBWKQp7CiAgICB0aGlzLT5WID0gVjsKICAgIGFkaiA9IG5ldyBsaXN0PGludD5bVl07CiAgICB2YWw9KGludCAqKW1hbGxvYyhzaXplb2YoaW50KSooVikpOwp9Cgp2b2lkIEdyYXBoOjphZGRFZGdlKGludCB2LCBpbnQgdykKewogICAgYWRqW3ZdLnB1c2hfYmFjayh3KTsKfQoKdm9pZCBHcmFwaDo6REZTVXRpbChpbnQgdiwgYm9vbCB2aXNpdGVkW10pCnsKICAgIHZpc2l0ZWRbdl0gPSB0cnVlOwoKICAgIGlmKHZhbFt2XT49MCkKICAgIHsKICAgICAgICAvL3ByaW50ZigieyAlbGxkICVkIixtaSxtaW5fYWxsKTsKICAgICAgICBtaT1taW5pbXVtKHZhbFt2XSxtaSk7CiAgICAgICAgbWluX2FsbD1taW5pbXVtKHZhbFt2XSxtaW5fYWxsKTsKICAgICAgICAvL3ByaW50ZigiJWxsZCAlZCB9XG4iLG1pLG1pbl9hbGwpOwogICAgfQoKCiAgICBsaXN0PGludD46Oml0ZXJhdG9yIGk7CiAgICBmb3IoaSA9IGFkalt2XS5iZWdpbigpOyBpICE9IGFkalt2XS5lbmQoKTsgKytpKQogICAgICAgIGlmKCF2aXNpdGVkWyppXSkKICAgICAgICAgICAgREZTVXRpbCgqaSwgdmlzaXRlZCk7Cn0KCnZvaWQgR3JhcGg6OkRGUygpCnsKICAgIGJvb2wgKnZpc2l0ZWQgPSBuZXcgYm9vbFtWXTsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBWOyBpKyspCiAgICAgICAgdmlzaXRlZFtpXSA9IGZhbHNlOwoKICAgIGZvcihpbnQgaT0xO2k8VjtpKyspCiAgICB7CiAgICAgICAgaWYodmlzaXRlZFtpXT09ZmFsc2UpCiAgICAgICAgewogICAgICAgICAgICBtaT1NQVg7CiAgICAgICAgICAgIC8vcHJpbnRmKCIkJWxsZFxuIixtaSk7CiAgICAgICAgICAgIAogICAgICAgICAgICBkaXNqb2ludCsrOwoKICAgICAgICAgICAgREZTVXRpbChpLCB2aXNpdGVkKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICBpZihtaT09TUFYKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGFucz0tMTsKICAgICAgICAgICAgICAgIC8vcHJpbnRmKCIqKlxuIik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIGFucys9bWk7CiAgICAgICAgICAgIC8vcHJpbnRmKCIlbGxkKipcbiIsYW5zKTsKICAgICAgICB9CiAgICAgICAgaWYoYW5zPT0tMSlicmVhazsKCiAgICB9Cn0KCmludCBtYWluKCkKewogICAgaW50IG4sbTsKICAgIG49cmVhZCgpOwogICAgbT1yZWFkKCk7CiAgICAKICAgIAogICAgCiAgICAgICAgR3JhcGggZyhuKzEpOwogICAgICAgIG1pbl9hbGw9TUFYOwkKICAgICAgICBmb3IoaW50IGk9MDtpPG07aSsrKQogICAgICAgIHsKICAgICAgICAgICAgaW50IGEsYjsKICAgICAgICAgICAgYT1yZWFkKCk7CiAgICAgICAgICAgIGI9cmVhZCgpOwogICAgICAgICAgICBnLmFkZEVkZ2UoYSxiKTsKICAgICAgICB9CiAgICAgICAgZm9yKGludCBpPTE7aTw9bjtpKyspCiAgICAgICAgICAgIHNjYW5mKCIlZCIsJnZhbFtpXSk7CiAgICAgICAgCiAgICBpZihuPT0xKQogICAgewogICAgICAgIHByaW50ZigiMFxuIik7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgZy5ERlMoKTsKICAgICAgICBpZihkaXNqb2ludD09MSkKICAgICAgICB7CiAgICAgICAgICAgIHByaW50ZigiMFxuIik7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGlmKGFucz09LTEpCiAgICAgICAgICAgICAgICBwcmludGYoIi0xXG4iKTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkaXNqb2ludC09MjsKICAgICAgICAgICAgICAgIGFucys9ZGlzam9pbnQqbWluX2FsbDsKICAgICAgICAgICAgICAgIHByaW50ZigiJWxsZFxuIixhbnMpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0K