func_code_string: #include <bits/stdc++.h>   using namespace std;   const long double pi = 3.1415926535897932384626433832795l;   template <typename T>   inline auto sqr(T x) -> decltype(x * x) {     return x * x;   }   template <typename T>   inline T abs(T x) {     return x > T() ? x : -x;   }   template <typename T1, typename T2>   inline bool umx(T1& a, T2 b) {     if (a < b) {       a = b;       return 1;     }     return 0;   }   template <typename T1, typename T2>   inline bool umn(T1& a, T2 b) {     if (b < a) {       a = b;       return 1;     }     return 0;   }   const int N = 100100;   struct Input {     int n;     vector<pair<int, int> > a[N];     int len[N];     int num[N], w[N];     int q;     bool read() {       if (scanf( %d , &n) != 1) return 0;       for (int i = 0; i < int(n - 1); ++i) {         int u, v;         scanf( %d %d %d , &u, &v, &len[i]);         u--, v--;         a[u].push_back(make_pair(v, i));         a[v].push_back(make_pair(u, i));       }       cin >> q;       for (int i = 0; i < int(q); ++i) {         scanf( %d %d , &num[i], &w[i]);         num[i]--;       }       return 1;     }     void init(const Input& input) { *this = input; }   };   struct Data : Input {     long double ans[N];     void write() {       for (int i = 0; i < int(q); ++i) {         printf( %0.15lf n , (double)ans[i]);       }     }     virtual void solve() {}     virtual void clear() { *this = Data(); }   };   struct Solution : Data {     int sz[N];     int kol[N];     bool use[N];     int dfs(int v, int idx = -1) {       use[v] = 1;       sz[v] = 1;       for (int i = 0; i < int(a[v].size()); ++i) {         int to = a[v][i].first;         if (use[to]) continue;         sz[v] += dfs(to, a[v][i].second);       }       if (idx >= 0) kol[idx] = sz[v];       return sz[v];     }     inline long double c(int a, int b) {       if (a < b) return 0;       if (b == 0) return 1;       if (b == 1) return a;       if (b == 2) {         return (long double)a * (a - 1) / 2.0;       }       return (long double)a * (a - 1) * (a - 2) / 6.0;     }     inline long double get(int i) {       return 2.0 * (long double)kol[i] * c((n - kol[i]), 2) +              2.0 * (long double)(n - kol[i]) * c(kol[i], 2);     }     void solve() {       dfs(0);       long double res = 0;       for (int i = 0; i < int(n - 1); ++i) {         res += get(i) * len[i];       }       for (int i = 0; i < int(q); ++i) {         res -= get(num[i]) * len[num[i]];         len[num[i]] = w[i];         res += get(num[i]) * len[num[i]];         ans[i] = res / c(n, 3);       }     }     void clear() { *this = Solution(); }   };   Solution sol;   int main() {     cout.setf(ios::showpoint | ios::fixed);     cout.precision(20);     sol.read();     sol.solve();     sol.write();     return 0;   }   