#include <bits/stdc++.h>
using namespace std;
const int N = 55;
int n, tot, siz[N], head[N];
long double g[N], f[N][N], C[N][N];
int read() {
  int ret = 0;
  char c = getchar();
  while (!isdigit(c)) c = getchar();
  while (isdigit(c)) ret = ret * 10 + (c ^ 48), c = getchar();
  return ret;
}
struct Tway {
  int v, nex;
} e[N << 1];
void add(int u, int v) {
  e[++tot] = (Tway){v, head[u]};
  head[u] = tot;
  e[++tot] = (Tway){u, head[v]};
  head[v] = tot;
}
void init() {
  for (int i = 0; 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];
  }
  n = read();
  for (int i = 1; i < n; ++i) add(read(), read());
}
void dfs(int x, int fa) {
  siz[x] = f[x][1] = 1;
  for (int l = head[x]; l; l = e[l].nex) {
    int v = e[l].v;
    if (v == fa) continue;
    dfs(v, x);
    for (int i = 0; i <= siz[x] + siz[v]; ++i) g[i] = 0;
    for (int i = 1; i <= siz[x]; ++i)
      for (int j = 1; j <= siz[v]; ++j)
        for (int k = 0; k <= siz[v]; ++k) {
          long double tmp = f[x][i] * f[v][min(j, k + 1)] * (j <= k ? 0.5 : 1);
          g[i + k] +=
              tmp * C[i + k - 1][k] * C[siz[x] - i + siz[v] - k][siz[v] - k];
        }
    for (int i = 0; i <= siz[x] + siz[v]; ++i) f[x][i] = g[i];
    siz[x] += siz[v];
  }
}
void solve() {
  long double fc = 1;
  for (int i = 1; i < n; ++i) fc *= (long double)i;
  for (int i = 1; i <= n; ++i)
    dfs(i, 0), printf("%.9lf\n", (double)(f[i][n] / fc));
}
int main() {
  init();
  solve();
  return 0;
}
