#include <bits/stdc++.h>
using namespace std;
using li = long long;
using ld = long double;
void solve(bool);
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cout << fixed << setprecision(20);
  solve(true);
  return 0;
}
const int maxn = 55;
int sz[maxn];
vector<int> g[maxn];
ld ans[maxn], d[maxn][maxn], dp[maxn][maxn];
ld fact[maxn];
int n;
void clean_all() {}
void dfs0(int v, int pr) {
  sz[v] = 1;
  for (int i = 0; i < (int)g[v].size(); ++i) {
    if (g[v][i] == pr) {
      swap(g[v][i], g[v].back());
    }
    if (g[v][i] == pr) continue;
    dfs0(g[v][i], v);
    sz[v] += sz[g[v][i]];
  }
}
void clean_dp(int v, int cnt) {
  for (int i = 0; i < (int)g[v].size() + 1; ++i) {
    for (int j = 0; j <= cnt; ++j) {
      dp[i][j] = 0;
    }
  }
}
void dfs(int v, int pr) {
  int sons_cnt = (int)g[v].size() - 1;
  if (pr == -1) ++sons_cnt;
  for (int i = 0; i < sons_cnt; ++i) {
    int to = g[v][i];
    dfs(to, v);
  }
  for (int cnt = 0; cnt < sz[v]; ++cnt) {
    clean_dp(v, cnt);
    dp[0][0] = fact[cnt] * fact[sz[v] - 1 - cnt];
    for (int i = 0; i < sons_cnt; ++i) {
      int to = g[v][i];
      for (int j = 0; j <= cnt; ++j) {
        if (dp[i][j] != 0) {
        }
        for (int k = 0; k + j <= cnt && k < sz[to]; ++k) {
          if (k + j < cnt) {
            dp[i + 1][j + k + 1] += dp[i][j] * d[to][k] * (k + 1) /
                                    fact[k + 1] / fact[sz[to] - 1 - k];
          }
          for (int q = 0; k + q < sz[to]; ++q) {
            dp[i + 1][j + k] += dp[i][j] * d[to][k + q] / 2. / fact[k] /
                                fact[sz[to] - 1 - k + 1];
          }
        }
      }
    }
    d[v][cnt] = dp[sons_cnt][cnt];
  }
}
void solve(bool __attribute__((unused)) read) {
  fact[0] = 1.;
  for (int i = 1; i < maxn; ++i) {
    fact[i] = fact[i - 1] * (ld)i;
  }
  if (read) {
    cin >> n;
  } else {
    n = 50;
  }
  for (int i = 0; i < n - 1; ++i) {
    int x, y;
    if (read) {
      cin >> x >> y;
      --x;
      --y;
    } else {
      x = (i + 1) / 2;
      y = i + 1;
    }
    g[x].push_back(y);
    g[y].push_back(x);
  }
  for (int st = 0; st < n; ++st) {
    clean_all();
    dfs0(st, -1);
    dfs(st, -1);
    ans[st] = d[st][0];
  }
  ld sumans = 0;
  for (int i = 0; i < n; ++i) {
    sumans += ans[i] / fact[n - 1];
    cout << ans[i] / fact[n - 1] << "\n";
  }
}
