#include <bits/stdc++.h>
const int maxn = 55;
int n;
struct edge {
  int to;
  edge* next;
} E[maxn * 2], *ne = E, *fir[maxn];
int sz[maxn];
double f[55][55], g[55][55], tmp[55], C[55][55];
void link(int u, int v) {
  *ne = (edge){v, fir[u]};
  fir[u] = ne++;
}
void dfs(int i, int fa = 0) {
  sz[i] = 0;
  g[i][0] = 1;
  for (edge* e = fir[i]; e; e = e->next)
    if (e->to != fa) {
      dfs(e->to, i);
      for (int j = 0; j <= sz[e->to]; j++)
        for (int j2 = 0; j2 <= sz[i]; j2++)
          tmp[j + j2] +=
              C[j + j2][j] * C[sz[e->to] + sz[i] - j - j2][sz[e->to] - j] /
              C[sz[e->to] + sz[i]][sz[e->to]] * f[e->to][j] * g[i][j2];
      sz[i] += sz[e->to];
      for (int j = 0; j <= sz[i]; j++) g[i][j] = tmp[j], tmp[j] = 0;
    }
  if (!fa) return;
  sz[i]++;
  for (int j = 0; j <= sz[i]; j++) f[i][j] = (sz[i] - j) * g[i][j];
  for (int j = 1; j < sz[i]; j++) g[i][j] += g[i][j - 1];
  for (int j = 0; j <= sz[i]; j++)
    f[i][j] = (f[i][j] + (j ? g[i][j - 1] / 2 : 0)) / sz[i];
}
int main() {
  scanf("%d", &n);
  for (int i = 1, u, v; i < n; i++)
    scanf("%d%d", &u, &v), link(u, v), link(v, u);
  for (int i = 0; i <= n; i++)
    for (int j = 0; j <= i; j++)
      C[i][j] = j ? C[i - 1][j - 1] + C[i - 1][j] : 1;
  for (int i = 1; i <= n; i++) {
    dfs(i);
    printf("%.10lf\n", g[i][n - 1]);
  }
}
