voidkruskal(){ sort(e + 1, e + n); ll ans = 0; for (int i = 1; i < n; ++i) { int x = find(e[i].x_), y = find(e[i].y_); if (x == y) continue; ans += ((ll)s[x] * s[y] - 1) * (e[i].z_ + 1); fa[y] = x; s[x] += s[y]; } cout << ans << endl; }
intmain(){ int t, x, y, z; cin >> t; while (t--) { cin >> n; for (int i = 1; i <= n; ++i) fa[i] = i, s[i] = 1; for (int i = 1; i < n; ++i) { cin >> x >> y >> z; e[i] = {x, y, z}; } kruskal(); } return0; }