解题思路:
    思路参考另外的大佬,注意深度搜索时需要不断修改代价值,最终找到最大代价。
注意事项:

参考代码:

def dfs(root, cur_price):
    global map_
    global visited
    global cost
    global far_node
    visited[root] = True
    if cur_price > cost:
        cost = cur_price
        far_node = root
    # iterate the neighbor(s)
    for i in range(len(map_[root])):
        if not visited[map_[root][i][0]]:
            visited[map_[root][i][0]] = True
            dfs(map_[root][i][0], cur_price + map_[root][i][1])
            visited[map_[root][i][0]] = False


n = int(input())
map_ = [[] for _ in range(n + 1)]
visited = [False for _ in range(n +1)]
far_node, cost = 0, 0
for i in range(1, n):
    p, q, d = map(int, input().split())
    map_[p].append([q, d])
    map_[q].append([p, d])

dfs(1, 0)
visited[1], cost = False, 0
dfs(far_node, 0)

print(10 * cost + (1 + cost) * cost // 2)


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论