#include <bits/stdc++.h>
using namespace std;
const int mx = 55;
int n;
int hd[mx], nt[mx * 2], nd[mx * 2], fp = 0;
long double f[mx][mx], fac[mx], tt[mx];
void con(int x, int y) {
  nd[fp] = y;
  nt[fp] = hd[x];
  hd[x] = fp;
  fp++;
}
inline int read() {
  char ch = 0;
  int w = 0, x = 0;
  while (!isdigit(ch)) w |= (ch == '-'), ch = getchar();
  while (isdigit(ch)) x = x * 10 + ch - '0', ch = getchar();
  return w ? -x : x;
}
long double C(int n, int k) { return fac[n] / fac[k] / fac[n - k]; }
int size[mx];
void dfs(int u, int fat) {
  if (!u) return;
  size[u] = 1;
  int v;
  for (int i = hd[u]; i != -1; i = nt[i]) {
    v = nd[i];
    if (!v || v == fat) continue;
    dfs(v, u);
    size[u] += size[v];
  }
  f[u][0] = 1;
  int s = 1;
  for (int i = hd[u]; i != -1; i = nt[i]) {
    v = nd[i];
    if (!v || v == fat) continue;
    for (int j = 0; j <= size[v] + s; j++) tt[j] = 0;
    for (int q = size[v]; q >= 0; q--)
      for (int p = s - 1; p >= 0; p--)
        tt[p + q] += f[u][p] * f[v][q] * C(p + q, p) *
                     C(s - p - 1 + size[v] - q, s - p - 1);
    s += size[v];
    for (int j = 0; j <= s; j++) f[u][j] = tt[j];
  }
  if (fat) {
    for (int i = size[u]; i >= 0; i--) {
      f[u][i] *= (size[u] - i);
      for (int j = 0; j <= i - 1; j++) f[u][i] += 0.5 * f[u][j];
    }
  }
}
int main() {
  memset(hd, -1, sizeof hd);
  n = read();
  int x, y;
  for (int i = 0; i < n - 1; i++) {
    x = read(), y = read();
    con(x, y), con(y, x);
  }
  fac[0] = 1;
  for (int i = 1; i <= 50; i++) fac[i] = fac[i - 1] * i;
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j <= n; j++)
      for (int k = 0; k <= n; k++) f[j][k] = 0;
    dfs(i, 0);
    printf("%0.10f\n", (double)(f[i][n - 1] / fac[n - 1]));
  }
  return 0;
}
