求助大佬,四个re是为什么捏。
查看原帖
求助大佬,四个re是为什么捏。
755432
ramsol楼主2023/4/13 13:37
n = int(input())
h = []
nxs = {}
flag = []
dp = [[0]*2 for _ in range(n)]
for _ in range(n):
    flag.append(1)
    h.append(int(input()))

for _ in range(n-1):
    l, k = map(int, input().split(" "))
    # if l not in nxs:
    #     nxs[l] = []
    if k-1 not in nxs:
        nxs[k-1] = []
    nxs[k-1].append(l-1)
    flag[l-1] = 0

def dfs(i):
    global dp
    if i in nxs:
        for j in nxs[i]:
            dfs(j)
            dp[i][0] += max(dp[j][0], dp[j][1])
            dp[i][1] += dp[j][0]
    dp[i][1] += h[i]


for i in range(n):
    if flag[i] == 1:
        dfs(i)
        print(max(dp[i][1], dp[i][0]))
        break
2023/4/13 13:37
加载中...