# 題目

AP325 Q-8-15. 樹上一位不回家的推銷員

# 解題思路

目前沒東西...

# 程式碼

#include<bits/stdc++.h>
using namespace std;
#define N 500005
vector<pair<int,int>> adj[N];
int dis[N]={0};
void dfs_dis(int v,int p){
    for(auto e:adj[v]){
        int u=e.first,w=e.second;
        if(u==p) continue;
        dis[u]+=dis[v]+w;
        dfs_dis(u,v);
    }
}
int dis_temp[N]={0};
void dfs_disw(int v,int p){
    for(auto e:adj[v]){
        int u=e.first,w=e.second;
        if(u==p) continue;
        dis_temp[u]+=dis_temp[v]+w;
        dfs_disw(u,v);
        dis[v]+=dis[u]+w;
    }
}
int main(){
    int n;
    cin>>n;
    for(int i=1,u,v,w;i<n;i++){
        cin>>u>>v>>w;
        adj[u].push_back({v,w});
        adj[v].push_back({u,w});
    }
    dfs_dis(1,-1);
    int farthest=max_element(dis,dis+n)-dis;// 取點
    memset(dis,0,sizeof(dis));
    dfs_disw(farthest,-1);
    int mx=dis[farthest];
    farthest=*max_element(dis_temp,dis_temp+n);// 取值
    mx=mx*2-farthest;
    cout<<mx;
    return 0;
}