#include <bits/stdc++.h>
using namespace std;
const int maxn = 111;
int fst[maxn], lst[maxn], to[maxn], sz[maxn], e, n;
inline void add(int x, int y) { to[++e] = y, lst[e] = fst[x], fst[x] = e; }
long double c[maxn][maxn], dp[maxn][maxn], tmp[maxn], fac[maxn];
inline void dfs(int x, int f) {
  sz[x] = dp[x][0] = 1;
  for (register int i = fst[x]; i; i = lst[i]) {
    int v = to[i];
    if (v == f) continue;
    dfs(v, x);
    int tot = sz[x] + sz[v] - 1;
    for (register int j = 0; j <= tot; ++j) tmp[j] = 0;
    for (register int a = 0; a < sz[x]; ++a)
      for (register int b = 0; b <= sz[v]; ++b)
        tmp[a + b] +=
            dp[x][a] * dp[v][b] * c[a + b][a] * c[tot - a - b][sz[v] - b];
    sz[x] += sz[v];
    for (register int j = 0; j < sz[x]; ++j) dp[x][j] = tmp[j];
  }
  if (f == 0) return;
  for (register int i = 0; i <= sz[x]; ++i) tmp[i] = 0;
  for (register int i = 0; i < sz[x]; ++i) {
    tmp[i] += (sz[x] - i) * dp[x][i];
    for (register int j = i + 1; j <= sz[x]; ++j) tmp[j] += dp[x][i] * 0.5;
  }
  for (register int i = 0; i <= sz[x]; ++i) dp[x][i] = tmp[i];
}
int main() {
  cin >> n;
  for (register int i = 1, x, y; i < n; ++i)
    scanf("%d%d", &x, &y), add(x, y), add(y, x);
  fac[0] = 1.0;
  for (register int i = 1; i <= n; ++i) fac[i] = fac[i - 1] * i;
  for (register int i = 0; i < maxn; ++i) c[i][0] = c[i][i] = 1;
  for (register int i = 1; i < maxn; ++i)
    for (register int j = 0; j < maxn; ++j)
      c[i][j] = c[i - 1][j - 1] + c[i - 1][j];
  for (register int i = 1; i <= n; ++i) {
    dfs(i, 0);
    printf("%.10lf\n", (double)(dp[i][n - 1] / fac[n - 1]));
  }
  return 0;
}
