代码如下
#include <bits/stdc++.h>
using namespace std;
void dfs(int len, vector<vector<int>> g, int father, vector<int> &dist, int now) {
dist[now] = len;
for (int i = 0; i < g.size(); i++) {
if (i != father&&g[now][i]!=0) {
dfs(len + g[now][i], g, now, dist, i);
}
}
}
int main() {
int n;
cin >> n;
vector<vector<int>> g(n, vector<int>(n, 0));
vector<int> dist(n + 1);
for (int i = 0; i < n - 1; i++) {
int p, q, d;
cin >> p >> q >> d;
g[q-1][p-1] = g[p-1][q-1] = d;
}
dfs(0, g, -1, dist, 0);
long long len = 0;
int pos = 0;
for (int i = 0; i < n; i++) {
if (dist[i] > dist[pos]) {
pos = i;
}
}
dfs(0, g, -1, dist, pos);
for (int i = 0; i < n; i++) {
if (dist[i] > dist[pos]) {
pos = i;
len = dist[i];
}
}
cout << 10 * len + (1 + len) * len / 2;
return 0;
}