#include <bits/stdc++.h>
#define int long long
using namespace std;
int n, m, ans = 0;
int a[10009], fa[10009];
queue<int> que;
void dfs(int now, int cnt) {
bool flag = true;
for (int i = 1; i <= n; i++) {
if (fa[i] == now) {
flag = false;
dfs(i, cnt + a[now]);
}
}
if (flag) {
ans = max(ans, cnt + a[now]);
}
}
signed main(void) {
scanf("%lld%lld", &n, &m);
for (int i = 1; i <= n; i++) {
scanf("%lld", &a[i]);
fa[i] = 0;
}
for (int i = 1; i <= m; i++) {
int tmp_b, tmp_a;
scanf("%lld%lld", &tmp_a, &tmp_b);
fa[tmp_a] = tmp_b;
}
for (int i = 1; i <= n; i++) {
if (fa[i] == 0) {
que.push(i);
}
}
while (!que.empty()) {
dfs(que.front(), 0);
que.pop();
}
printf("%lld", ans);
return 0;
}