传送门:
给出一棵n个点的树,将这n个点两两配对,求所有可行的方案中配对两点间的距离的总和最大为多少。
一个数n(1<=n<=100,000,n保证为偶数)接下来n-1行每行三个数x,y,z表示有一条长度为z的边连接x和y(0<=z<=1,000,000,000)
一个数表示答案
61 2 11 3 11 4 13 5 14 6 1
7//配对方案为(1,2)(3,4)(5,6)
这题一开始完全没思路,后来在评论中看到有人说是求树的重心再到其他点的距离和,就去查了下树的重心的定义——找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心。对于这题,配对的两点的路径一定要经过重心,这样才能保证距离最大,而如果任意两点都经过重心,他们的总距离一定是重心到其他点的距离和。这个模拟一下就能知道了。通过这题顺带学习一下树的重心。
#include #include #include #include #include #include #include #include #include #include