func_code_string: #include <bits/stdc++.h>   using namespace std;   void Freopen() {     freopen(          title           .in ,          r , stdin);     freopen(          title           .out ,          w , stdout);   }   int read() {     int g = 0, f = 1;     char ch = getchar();     while (ch <  0  ||  9  < ch) {       if (ch ==  - ) f = -1;       ch = getchar();     }     while ( 0  <= ch && ch <=  9 ) {       g = g * 10 + ch -  0 ;       ch = getchar();     }     return g * f;   }   const int N = 2e5 + 5;   const int INF = 1e9;   struct Edge {     int to, ne, w;   } e[N << 1];   int h[N], cnt, size[N], vis[N], a[N], rt, ans1, n;   double d[N], su, sd, ans2;   void add(int x, int y, int w) {     e[++cnt] = Edge{y, h[x], w};     h[x] = cnt;   }   void dfs(int x, int fa, int s) {     size[x] = 1;     int maxn = 0;     for (int i = h[x]; i; i = e[i].ne) {       int y = e[i].to;       if (vis[y] || y == fa) continue;       dfs(y, x, s), size[x] += size[y];       maxn = max(maxn, size[y]);     }     maxn = max(maxn, s - size[x]);     if (maxn <= (s >> 1)) rt = x;   }   void calc(int x, int fa, int anc, int w) {     su += pow(w, 1.5) * a[x], d[anc] += pow(w, 0.5) * 1.5 * a[x];     for (int i = h[x]; i; i = e[i].ne) {       int y = e[i].to;       if (y == fa) continue;       calc(y, x, anc, w + e[i].w);     }   }   void solve(int x, int s) {     dfs(x, 0, s), x = rt, dfs(x, 0, s);     if (vis[x]) return;     vis[x] = 1, su = sd = 0;     for (int i = h[x]; i; i = e[i].ne) {       int y = e[i].to;       d[y] = 0;       calc(y, x, y, e[i].w);       sd += d[y];     }     if (su < ans2) ans1 = x, ans2 = su;     for (int i = h[x]; i; i = e[i].ne) {       int y = e[i].to;       if (sd - d[y] * 2 >= 0) continue;       solve(y, size[y]);       break;     }   }   signed main() {     n = read();     for (int i = 1; i <= n; i++) a[i] = read();     for (int i = 1; i < n; i++) {       int x = read(), y = read(), w = read();       add(x, y, w), add(y, x, w);     }     ans2 = 1e20;     solve(1, n);     return cout << ans1 <<     << fixed << setprecision(20) << ans2, signed();   }   