import sys
import math
input = sys.stdin.readline
sys.setrecursionlimit(10000)
T = int(input())
result = []
for _ in range(T):
N,K = map(int, input().split())
cons_time = [0] + list(map(int,input().split()))
graph = [[] for _ in range(N+1)]
for _ in range(K):
X,Y = map(int,input().split())
graph[Y].append(X)
total_time = [-1] * (N+1)
def dfs(u):
global total_time
if len(graph[u])==0:
total_time[u] = cons_time[u]
else:
parent_time = []
for v in graph[u]:
if total_time[v] == -1:
total_time[v] = dfs(v)
parent_time.append(total_time[v])
total_time[u] = max(parent_time) + cons_time[u]
return total_time[u]
result.append(dfs(int(input())))
for r in result:
print(r)