Jae-Kyung Cho LLM Developers who was a Robotics engineer

Baekjoon-1005-ACM Craft

import sys
import math
input = sys.stdin.readline
sys.setrecursionlimit(10000)

T = int(input())

result = []
for _ in range(T):
    N,K = map(int, input().split())
    cons_time = [0] + list(map(int,input().split()))
    graph = [[] for _ in range(N+1)]
    for _ in range(K):
        X,Y = map(int,input().split())
        graph[Y].append(X)
    
    total_time = [-1] * (N+1)
    def dfs(u):
        global total_time

        if len(graph[u])==0:
            total_time[u] = cons_time[u]
        else:
            parent_time = []
            for v in graph[u]:
                if total_time[v] == -1:
                    total_time[v] = dfs(v)
                parent_time.append(total_time[v])
            total_time[u] = max(parent_time) + cons_time[u]
        return total_time[u]

    result.append(dfs(int(input())))

for r in result:
    print(r)
Comments