2026-03-20 22:40:39 +09:00

46 lines
991 B
Python

from collections import deque
import sys
input = sys.stdin.readline
def solve() :
N, K = map(int, input().split())
build_time = [0] + list(map(int, input().split()))
graph = [[] for _ in range(N+1)]
indegree = [0]*(N+1)
for _ in range(K) :
x, y = map(int, input().split())
graph[x].append(y)
indegree[y] += 1
qu = deque()
dp = [0]*(N+1)
for i in range(1, N+1) :
if indegree[i] == 0 :
qu.append(i)
dp[i] = build_time[i]
W = int(input())
while qu :
now = qu.popleft()
if now == W :
break
for nxt in graph[now] :
dp[nxt] = max(dp[nxt], dp[now] + build_time[nxt])
indegree[nxt] -= 1
if indegree[nxt] == 0 :
qu.append(nxt)
return dp[W]
ans = []
for _ in range(int(input())) :
ans.append(solve())
print("\n".join(map(str, ans)))