2025-12-24 20:06:10 +09:00

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))