import java.util.*;
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
static int max=10010;
//记录最大距离
static int maxLen=-1;
//记录最远点
static int maxNode=0;
//图的邻接表
static List<Node>[] arr=new List[max];
static boolean[] vis=new boolean[max];
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
for (int i=1;i<=n;i++)
{
arr[i]=new ArrayList<>();
}
for (int i=0;i<n-1;i++)
{
int a=sc.nextInt();
int b=sc.nextInt();
int c=sc.nextInt();
arr[a].add(new Node(b,c));
arr[b].add(new Node(a,c));
}
//第一次dfs从任意点出发找到最远点p
dfs(1,0);
//第二次dfs找到距离p点最远的点
Arrays.fill(vis, false);
maxLen=-1;
dfs(maxNode,0);
System.out.println(maxLen*(maxLen+1)/2+maxLen*10);
}
//记录通向某个点的路径距离
static class Node
{
int num;
int length;
public Node(int num, int length) {
super();
this.num = num;
this.length = length;
}
}
//点,距离
public static void dfs(int node,int nowLen)
{
if (vis[node])
{
return;
}
vis[node]=true;
for (int i=0;i<arr[node].size();i++)
{
int child=arr[node].get(i).num;
int length=arr[node].get(i).length;
if (vis[child])
{
continue;
}
if (nowLen+length>maxLen)
{
maxLen=nowLen+length;
maxNode=child;
}
dfs(child,nowLen+length);
}
}
}
P8602 [蓝桥杯 2013 省 A] 大臣的旅费
最新推荐文章于 2024-07-30 20:50:32 发布