#include <bits/stdc++.h>
using namespace std;
const int N = 55;
template <typename T>
void pfill(T* pst, const T* ped, T val) {
  for (; pst != ped; *(pst++) = val)
    ;
}
int n;
int sz[N];
long double f[N][N];
long double C[N][N];
vector<int> g[N];
inline void init() {
  scanf("%d", &n);
  for (int i = 1, u, v; i < n; i++) {
    scanf("%d%d", &u, &v);
    g[u].push_back(v);
    g[v].push_back(u);
  }
}
void dp(int p, int fa) {
  static long double h[N], tmp[N];
  sz[p] = 1, f[p][0] = 1;
  for (int i = 0, e; i < (signed)g[p].size(); i++) {
    if ((e = g[p][i]) == fa) continue;
    dp(e, p);
    int se = sz[e];
    for (int x = 0; x <= se; x++) {
      h[x] = 0;
      for (int y = 0; y < x; y++) h[x] += f[e][y] * 0.5;
      h[x] += f[e][x] * (se - x);
    }
    int sum = se + sz[p];
    pfill(tmp, tmp + sum + 1, (long double)0);
    for (int x = 0; x < sz[p]; x++)
      for (int y = 0; y <= se; y++)
        tmp[x + y] += f[p][x] * h[y] * C[x + y][x] * C[sum - 1 - x - y][se - y];
    copy(tmp, tmp + sum + 1, f[p]);
    sz[p] = sum;
  }
}
inline void solve() {
  long double fac = 1;
  for (int i = 2; i < n; i++) fac = fac * i;
  C[0][0] = 1;
  for (int i = 1; i <= n; i++) {
    C[i][0] = C[i][i] = 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++) {
    pfill(f[1], f[n + 1], (long double)0);
    dp(i, 0);
    printf("%.9lf\n", (double)(f[i][n - 1] / fac));
  }
}
int main() {
  init();
  solve();
  return 0;
}
