猿辅导 8.1 笔试第二题请教

N = int(input())
awards = []
start = 0
for i in range(N):
    c = list(map(int,input().split()))
    if c[1]!=0:
        c[1] -= 2
    else:
        c[1] = -1
    awards.append(c)

sent = dict()
for i,award in enumerate(awards):
    if award[1] != -1:
        sent[award[1]] = sent.setdefault(award[1],[])
        sent[award[1]].append(i)

last = set()
for i in range(N):
    if i not in sent:
        last.add(i)

res = []
def helper(i):
    if i in last:
        a = awards[i][0]
        res.append(a)
        return a

    son = sent[i]
    a = [helper(j) for j in son]
    b = []
    for ason in a:
        if ason>0:
            b.append(ason)
    if b:
        res.append(awards[i][0]+sum(b))
        return awards[i][0]+sum(b)
    else:
        res.append(awards[i][0])
        return awards[i][0]

helper(start)
# print(res)
print(max(res))
# print(sent)
# print(last)

d
第二题应该是 多叉树 + 回溯
我的代码如上,没有超时但是一个都不对,测试用例对的。请问大佬们哪里错了
#笔试题目#
全部评论

相关推荐

拒绝无效加班的小师弟很中意你:求职意向没有,年龄、课程冗余信息可以删掉,需要提升项目经历。排版需要修改。
点赞 评论 收藏
分享
可可可可可_:nb啊,看样子是专科玩了几年随便专升本了个民办,又玩了两年。你这能找到我吃
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务