#include <iostream>
#include <fstream>
#include <algorithm> // std::reverse
#include <vector>
using namespace std;
ifstream fin ("easygraph.in");
ofstream fout ("easygraph.out");
const int inf = 2000000000;
int x, y, n, m, viz[15000+5];
vector<int> v[15000+5], st;
int valori[15000+5];
int sum[15000+5];
int suma;
int t;
void dfs(int nod) {
viz[nod] = 1;
for(auto u : v[nod]) {
if(!viz[u])
dfs(u);
}
st.push_back(nod);
}
int main() {
fin >> t;
for(int tt = 1; tt <= t; tt++){
fin >> n >> m;
for(int i = 1; i <= n; i++){
fin >> valori[i];
}
for(int i = 1; i <= m; i ++) {
fin >> x >> y;
v[x].push_back(y);
}
for(int i = 1; i <= n; i ++) {
if(viz[i] == 0)
dfs(i);
}
reverse(st.begin(), st.end());
for(int i = 0; i < n; i ++)
sum[i] = valori[st[i]];
for(int i = 0; i < n; i++){
if(suma < 0){
suma = 0;
}
suma += sum[i];
}
fout << suma;
}
return 0;
}