#include using namespace std; using ll = long long; using VI = vector; using VV = vector; using VS = vector; using PII = pair; templatebool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (b> G; map mp; // i, j間のedgeコスト(キーはij){ swap(i, j); } return mp[MP(i, j)]; } // i以降のノード数を返す // (iも含む) ll dfs(ll i, ll prev){ ll sum = 0; for(auto edge : G[i]){ if(edge.to==prev) continue; sum += dfs(edge.to, i); } ll a = sum+1; ll b = N-a; ll d = dist2(i, prev); ans += a*b*d; return sum+1; } int main(){ cin.tie(0); ios::sync_with_stdio(false); // input cin >> N; G.resize(N); rep(i, N-1){ ll u, v, w; cin >> u >> v >> w; u--; v--; G[u].push_back(Edge(v, w)); G[v].push_back(Edge(u, w)); if(u