func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 55;   int n, num, h[N], siz[N], e[N << 1], pre[N << 1];   double g[N], C[N][N], f[N][N];   inline void add(int x, int y) { e[++num] = y, pre[num] = h[x], h[x] = num; }   void dfs(int u, int fa = 0) {     memset(f[u], 0, sizeof f[u]), f[u][0] = siz[u] = 1;     for (int i = h[u]; i; i = pre[i])       if (e[i] != fa) {         dfs(e[i], u), siz[u] += siz[e[i]];         memset(g, 0, sizeof g);         for (int j = 0; j < siz[e[i]]; ++j) g[j] = f[e[i]][j] * (siz[e[i]] - j);         for (int j = 1; j <= siz[e[i]]; ++j)           for (int k = 0; k < j; ++k) g[j] += f[e[i]][k] / 2;         for (int j = siz[u]; j--;) {           f[u][j] = f[u][j] * g[0] * C[siz[u] - 1 - j][siz[e[i]]];           for (int k = 1; k <= siz[e[i]]; ++k)             f[u][j] +=                 f[u][j - k] * g[k] * C[siz[u] - 1 - j][siz[e[i]] - k] * C[j][k];         }       }   }   int main() {     scanf( %d , &n);     for (int i = 1, x, y; i < n; ++i) scanf( %d%d , &x, &y), add(x, y), add(y, x);     C[0][0] = 1;     for (int i = 1; i <= n; ++i)       for (int j = 0; j <= i; ++j)         C[i][j] = (j ? C[i - 1][j - 1] : 0) + C[i - 1][j];     double k = 1;     for (int i = 1; i < n; ++i) k /= i;     for (int i = 1; i <= n; ++i) dfs(i), printf( %.10lf n , f[i][n - 1] * k);     return 0;   }   