#include <bits/stdc++.h>
using namespace std;
const int inf = 0x7fffffff;
const double eps = 1e-10;
const double pi = acos(-1.0);
inline int read() {
  int x = 0, f = 1;
  char ch;
  ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = 0;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = (x << 1) + (x << 3) + (ch & 15);
    ch = getchar();
  }
  if (f)
    return x;
  else
    return -x;
}
const int N = 55;
int head[N], p, n;
struct ss {
  int v, last;
} G[N << 1];
void add(int a, int b) {
  G[++p] = (ss){b, head[a]};
  head[a] = p;
  G[++p] = (ss){a, head[b]};
  head[b] = p;
}
double fac[N], f[N][N], ls1[N], ls2[N];
double C(int m, int n) { return fac[m] / (fac[m - n] * fac[n]); }
double solve(int x, int y) { return C(x + y, x); }
int size[N];
void dfs(int a, int fa) {
  size[a] = 0;
  f[a][0] = 1.0;
  for (int i = head[a]; i; i = G[i].last)
    if (G[i].v != fa) {
      dfs(G[i].v, a);
      memset(ls1, 0, sizeof(ls1));
      memset(ls2, 0, sizeof(ls2));
      for (int j = 0; j <= size[G[i].v]; j++) {
        ls1[j] = f[G[i].v][j] * (size[G[i].v] - j);
        for (int k = 0; k < j; k++) ls1[j] += f[G[i].v][k] * 0.5;
      }
      for (int j = 0; j <= size[a]; j++)
        for (int k = 0; k <= size[G[i].v]; k++)
          ls2[j + k] += f[a][j] * ls1[k] * solve(j, k) *
                        solve(size[G[i].v] - k, size[a] - j);
      size[a] += size[G[i].v];
      for (int j = 0; j <= size[a]; j++) f[a][j] = ls2[j];
    }
  size[a]++;
}
int main() {
  n = read();
  for (int i = 1, a, b; i < n; i++) a = read(), b = read(), add(a, b);
  fac[0] = 1;
  for (int i = 1; i <= n; i++) fac[i] = fac[i - 1] * i;
  for (int i = 1; i <= n; i++)
    dfs(i, 0), printf("%.10lf\n", f[i][n - 1] / fac[n - 1]);
  return 0;
}
