小红书笔试第三题55%,没看见只需要三个景点导致超时就很气

n, m, k = map(int, input().split())
a = list(map(int, input().split()))
h = list(map(int, input().split()))
tmp = [[] for i in range(n)]
for i in range(m):
    start, end, dis = map(int, input().split())
    tmp[start - 1].append((end, dis))
    tmp[end - 1].append((start, dis))


def dfs(i, k, tmp):
    if h[i - 1] > k:
        return 0
    elif h[i - 1] == k:
        return a[i - 1]
    else:
        value = 0
        for next in tmp[i - 1]:
            if next == []:
                continue
            temp = a[i - 1]
            a[i - 1] = 0
            value = max(dfs(next[0], k - h[i - 1] - next[1], tmp) + temp, value)
            a[i - 1] = temp
        return value


value = 0
for i in range(1, n + 1):
    value = max(dfs(i, k, tmp), value)
print(value)

全部评论

相关推荐

点赞 评论 收藏
分享
06-23 11:43
门头沟学院 Java
allin校招的烤冷...:我靠,今天中午我也是这个hr隔一个星期发消息给我。问的问题还是一模一样的😅
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务