#include<bits/stdc++.h>
using namespace std;#definedbdouble#definelllonglong#definePirpair<int,int>#definefifirst#definesesecond#definepbpush_back#definem_pmake_pair#defineinf0x3f3f3f3f#defineINF0x3f3f3f3f3f3f3f3f/*==========ACMer===========*/constint N =1e4+10;
vector<Pir> e[N];int s, dep =-inf;int pre[N];int dis[N];voiddfs(int u,int p,int deep){
pre[u]= p;if(deep > dep){
dep = deep;/* dis[u] = */
s = u;}for(auto x : e[u]){if(x.fi == p)continue;dfs(x.fi, u, deep + x.se);
dis[x.fi]= x.se;}}intmain(){int n;scanf("%d",&n);int u, v, w;for(int i =1; i < n; i ++){scanf("%d %d %d",&u,&v,&w);
e[u].pb(m_p(v, w));
e[v].pb(m_p(u, w));}dfs(1,0,0);
dep =-inf;dfs(s,0,0);int ans = dep, sum =0;while(pre[s]){
sum += dis[s];
ans =min(ans,max(dep - sum, sum));
s = pre[s];}printf("%d\n", ans);return0;}
代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_back#define m_p make_pair#define inf 0x3f3f3f3f#define INF 0x3f3f3f3f.