#include <bits/stdc++.h>
const int MAXN = 100 + 10;
double f[MAXN][MAXN];
double choose[MAXN][MAXN];
double tmp[MAXN];
std::vector<int> g[MAXN];
int n;
int size[MAXN];
void dfs(int u, int fa) {
  size[u] = 0;
  f[u][0] = 1;
  for (int v : g[u]) {
    if (v == fa) continue;
    dfs(v, u);
    for (int i = 0; i < size[v]; i++) {
      tmp[i] = f[v][i];
    }
    tmp[size[v]] = 0;
    f[v][0] *= size[v];
    for (int i = 1; i <= size[v]; i++) {
      for (int j = 0; j < i; j++) {
        f[v][i] += tmp[j] * 0.5;
      }
      f[v][i] += tmp[i] * (size[v] - i - 1);
    }
    for (int i = 0; i <= size[u]; i++) {
      tmp[i] = f[u][i];
      f[u][i] = 0;
    }
    for (int i = 0; i <= size[v]; i++) {
      for (int j = 0; j <= size[u]; j++) {
        f[u][i + j] += f[v][i] * tmp[j] * choose[i + j][i] *
                       choose[size[u] + size[v] - i - j][size[v] - i];
      }
    }
    size[u] += size[v];
  }
  size[u]++;
}
int main() {
  scanf("%d", &n);
  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);
  }
  double fact = 1;
  for (int i = 1; i < n; i++) fact *= i;
  choose[0][0] = 1;
  for (int i = 1; i <= n; i++) {
    choose[i][0] = choose[i][i] = 1;
    for (int j = 1; j < i; j++) {
      choose[i][j] = choose[i - 1][j - 1] + choose[i - 1][j];
    }
  }
  for (int i = 1; i <= n; i++) {
    memset(f, 0, sizeof f);
    dfs(i, 0);
    printf("%.9f\n", f[i][n - 1] / fact);
  }
}
