#include <bits/stdc++.h>
using namespace std;
const int N = 55;
vector<int> g[N];
double f[N][N], F[N], tmp[N], C[N][N];
int n, siz[N];
void Solve(int x, int fa) {
  f[x][0] = 1;
  siz[x] = 1;
  for (int v : g[x]) {
    if (v == fa) continue;
    Solve(v, x);
    double pob = 1. / siz[v];
    for (int i = 0; i <= siz[v]; i++) F[i] = 0;
    for (int i = 0; i <= siz[v]; i++)
      for (int j = 0; j < siz[v]; j++)
        if (j < i)
          F[i] += pob * f[v][i - 1];
        else
          F[i] += 0.5 * pob * f[v][j];
    for (int i = 0; i < siz[x]; i++) tmp[i] = f[x][i], f[x][i] = 0;
    for (int i = 0; i < siz[x]; i++)
      for (int j = 0; j <= siz[v]; j++) {
        f[x][i + j] += F[j] * tmp[i] * C[siz[x] - 1][i] * C[siz[v]][j] /
                       C[siz[x] - 1 + siz[v]][i + j];
      }
    siz[x] += siz[v];
  }
}
int main(void) {
  scanf("%d", &n);
  C[0][0] = 1;
  for (int i = 1; i < n; i++) {
    C[i][0] = 1;
    for (int j = 1; j <= i; j++) C[i][j] = C[i - 1][j] + C[i - 1][j - 1];
  }
  for (int i = 1; i < n; i++) {
    int u, v;
    scanf("%d%d", &u, &v);
    g[u].push_back(v);
    g[v].push_back(u);
  }
  for (int i = 1; i <= n; i++) {
    memset(f, 0, sizeof f);
    Solve(i, 0);
    printf("%.10f\n", f[i][0]);
  }
  return 0;
}
