44 lines
957 B
Python
44 lines
957 B
Python
from collections import deque
|
|
import sys
|
|
input = sys.stdin.readline
|
|
|
|
ans = []
|
|
T = int(input())
|
|
|
|
for _ in range(T) :
|
|
N, K = map(int, input().split())
|
|
|
|
build_info = [[] for _ in range(N+1)]
|
|
dp = [-1]*(N+1)
|
|
build_time = [0] + list(map(int, input().split()))
|
|
indegree = [0]*(N+1)
|
|
|
|
for _ in range(K) :
|
|
u, v = map(int, input().split())
|
|
build_info[u].append(v)
|
|
indegree[v] += 1
|
|
|
|
W = int(input())
|
|
|
|
qu = deque()
|
|
|
|
for i in range(1, N+1) :
|
|
if indegree[i] == 0 :
|
|
qu.append(i)
|
|
dp[i] = build_time[i]
|
|
|
|
while qu :
|
|
now = qu.popleft()
|
|
if now == W :
|
|
break
|
|
|
|
for next in build_info[now] :
|
|
dp[next] = max(dp[next], dp[now] + build_time[next])
|
|
|
|
indegree[next] -= 1
|
|
if indegree[next] == 0 :
|
|
qu.append(next)
|
|
|
|
ans.append(str(dp[W]))
|
|
|
|
print('\n'.join(ans)) |