#include using namespace std; #define N 100111 #define ll long long typedef pair > edge; #define c first #define p second #define a first #define b second edge edges[N]; ll parent[N]; int find(int n) { return parent[n] < 0 ? n : parent[n] = find(parent[n]); } void solve() { int n; scanf("%d", &n); ll num = 0, den = 0; for (int i = 0; i < n; i++) { parent[i] = -1; } double total = 0; for (int i = 1; i < n; i++) { int a, b; scanf("%d%d%d", &a, &b, &edges[i].c); edges[i].p.a = a-1; edges[i].p.b = b-1; total += edges[i].c; } sort(edges + 1, edges + n); for (int i = 1; i < n; i++) { int a = find(edges[i].p.a); int b = find(edges[i].p.b); num += parent[a]*parent[b]*edges[i].c; den += parent[a]*parent[b]; if (parent[a] > parent[b]) { parent[b] += parent[a]; parent[a] = b; } else { parent[a] += parent[b]; parent[b] = a; } } printf("%.11f\n", total - (double) num / den); } int main() { solve(); }