46 lines
991 B
Python
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))) |