链接:
来源:牛客网
题目描述
旅行商来到了一个新的国家,这个国家有N个城市,他们直接由N-1条道路相连接,每条道路的长度不尽相同
旅行商现在在1号城市,若他要每一个城市都游览一遍,他需要行走的最短路程是多少?
输入描述:
第一行一个数N (50000>N>1)代表城市个数之后N-1行每行三个数x y z代表从x到y的距离为z
输出描述:
输出最小距离
示例1
输入
31 2 11 3 1
输出
3
思路 : N个城市,N-1条道路,如果要走遍所有的城市,只要有一个城市与>1个城市有路,那么就一定会有走回头路。
呢么要求权值最小的最短路程,就是让尽量回头路那段路程小。
假设把所有的道路都来回走一遍,找一次性能走的最长的一条路 ,那么剩下没走的就是最短的回头路了
用dfs找那条权值最大的那条路 因为要求这条路是不走回头路的,所以记录走到的点的父节点,不往父节点走
最后 最短路程为 sum * 2 - imax;
#include #include //EOF,NULL#include //memset#include //rand,srand,system,itoa(int),atoi(char[]),atof(),malloc#include //ceil,floor,exp,log(e),log10(10),hypot(sqrt(x^2+y^2)),cbrt(sqrt(x^2+y^2+z^2))#include //fill,reverse,next_permutation,__gcd,#include #include #include #include #include #include #include //setw(set_min_width),setfill(char),setprecision(n),fixed,#include #include