#include <bits/stdc++.h>
using namespace std;
int n, size[55];
double f[55][55], fac[55];
int cnt, head[55], to[110], nxt[110];
void add(int x, int y) {
  cnt++;
  to[cnt] = y;
  nxt[cnt] = head[x];
  head[x] = cnt;
}
double c(int n, int m) {
  if (m < 0 || m > n) {
    return 0.0;
  } else {
    return fac[n] / fac[m] / fac[n - m];
  }
}
void dfs(int x, int fa) {
  size[x] = 1;
  f[x][0] = 1.0;
  double tmp[55];
  for (int i = head[x]; i; i = nxt[i]) {
    int y = to[i];
    if (y == fa) {
      continue;
    }
    dfs(y, x);
    for (int j = 0; j < size[x] + size[y]; j++) {
      tmp[j] = 0.0;
    }
    for (int j = 0; j < size[y]; j++) {
      for (int k = 0; k < size[x]; k++) {
        for (int h = j + k + 1; h <= size[y] + k; h++) {
          tmp[h] += c(h, k) * c(size[x] + size[y] - 1 - h, size[x] - 1 - k) *
                    f[x][k] * f[y][j] / 2.0;
        }
        tmp[j + k] += 1.0 * (size[y] - j) * c(j + k, j) *
                      c(size[x] + size[y] - 1 - j - k, size[x] - 1 - k) *
                      f[x][k] * f[y][j];
      }
    }
    size[x] += size[y];
    for (int j = 0; j < size[x]; j++) {
      f[x][j] = tmp[j];
    }
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i < n; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    add(x, y);
    add(y, x);
  }
  fac[0] = 1.0;
  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;
}
