1207. 大臣的旅费
#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> PII;
#define x first
#define y second
const int N = 1e5 + 10;
vector<PII> g[N];
int n;
int dis[N];
void dfs(int u, int fa, int distance){
dis[u] = distance;
for(auto &it : g[u]){
if(it.x != fa)
dfs(it.x, u, it.second + distance);
}
}
signed main(){
cin >> n;
for(int i = 0; i < n - 1; ++i){
int p, q, d; cin >> p >> q >> d;
g[p].push_back({q, d}); g[q].push_back({p, d});
}
//随便一个点开始遍历
dfs(1, -1, 0);
int u = 1;
for(int i = 1; i <= n; ++i)
if(dis[i] > dis[u]) u = i;
dfs(u, -1, 0);
for(int i = 1; i <= n; ++i)
if(dis[i] > dis[u]) u = i;
int s = dis[u];
printf("%lld\n", 10 * s + s * (s + 1ll) / 2);
return 0;
}