#include <bits/stdc++.h>
using namespace std;
const int N = 55;
vector<int> G[N];
double fac[N];
double dp[N][N], g[N], tmp[N << 1];
int siz[N];
int n;
double C(int n, int m) { return fac[n] / fac[m] / fac[n - m]; }
void dfs(int u, int FFF) {
  siz[u] = 1;
  dp[u][0] = 1;
  for (int it = 0; it < (int)G[u].size(); it++) {
    int v = G[u][it];
    if (v == FFF) continue;
    dfs(v, u);
    memset(g, 0, sizeof g);
    memset(tmp, 0, sizeof tmp);
    for (int i = 0; i <= siz[v]; i++) {
      for (int j = 1; j <= siz[v]; j++)
        if (j <= i)
          g[i] += 0.5 * dp[v][j - 1];
        else
          g[i] += dp[v][i];
    }
    for (int i = 0; i < siz[u]; i++) {
      for (int j = 0; j <= siz[v]; j++)
        tmp[i + j] += dp[u][i] * g[j] * C(i + j, i) *
                      C(siz[u] - 1 - i + siz[v] - j, siz[u] - 1 - i);
    }
    for (int i = 0; i < siz[u] + siz[v]; i++) dp[u][i] = tmp[i];
    siz[u] += siz[v];
  }
}
int main() {
  fac[0] = 1;
  for (int i = 1; i <= 50; i++) fac[i] = fac[i - 1] * i;
  cin >> n;
  for (int i = 1, u, v; i <= n - 1; i++) {
    cin >> u >> v;
    G[u].push_back(v);
    G[v].push_back(u);
  }
  for (int i = 1; i <= n; i++) {
    memset(dp, 0, sizeof dp);
    dfs(i, 0);
    printf("%.10lf\n", dp[i][n - 1] / fac[n - 1]);
  }
  return 0;
}
