첫째 줄에 총 건물 개수(N), 건설 조건 개수(K) 입력
둘째 줄부터 K+1번째 줄까지 건설 조건 입력
K+2번째 줄에 최종으로 건설해야 하는 건물 입력
최종 건물을 건설하기 위한 시간을 출력
  N, K = map(int, sys.stdin.readline().split())
    delay = list((map(int, sys.stdin.readline().split())))
    indeg = {build:[[],0] for build in range(1, N+1)}
    for _ in range(K):
        a, b = map(int, sys.stdin.readline().split())
        indeg[a][0].append(b)
        indeg[b][1] += 1
    win = int(input())
    q = deque([])
    ans = [delay[idx] for idx in range(N)]
    for build in range(1, N+1):
        if indeg[build][1] == 0: q.append(build)
    while q:
        curr = q.popleft()
        if curr == win: break
        for next_ in indeg[curr][0]:
            indeg[next_][1] -= 1
            ans[next_-1] = max(ans[next_-1], delay[next_-1]+ans[curr-1])
            if indeg[next_][1] == 0: q.append(next_)