#include <bits/stdc++.h>
using namespace std;
const int N = 60;
int n, sz[N], hed[N], ed, u, v;
long double f[N], g[N], dp[N][N], fac[N];
struct edge {
  int to, nex;
  edge(int _ = 0, int __ = 0) : to(_), nex(__) {}
} e[N << 1];
inline void add(int u, int v) {
  e[++ed] = edge(v, hed[u]);
  hed[u] = ed;
}
inline long double C(int n, int k) {
  if (n < k || k < 0) return 0;
  return fac[n] / fac[k] / fac[n - k];
}
void dfs(int u, int fa) {
  sz[u] = 1;
  dp[u][0] = 1;
  for (int i = hed[u], v = e[i].to; i; i = e[i].nex, v = e[i].to)
    if (v ^ fa) {
      dfs(v, u);
      long double tmp = 0;
      for (int j = (0); j <= (sz[v]); ++j) {
        g[j] = tmp * 0.5 + dp[v][j] * (sz[v] - j);
        tmp += dp[v][j];
      }
      for (int j = (0); j <= (sz[u] - 1); ++j)
        for (int k = (0); k <= (sz[v]); ++k)
          f[j + k] += dp[u][j] * g[k] * C(j + k, j) *
                      C(sz[u] + sz[v] - 1 - j - k, sz[u] - 1 - j);
      sz[u] += sz[v];
      for (int j = (0); j <= (sz[u] - 1); ++j) dp[u][j] = f[j], f[j] = 0;
    }
}
int main() {
  scanf("%d", &n);
  fac[0] = 1;
  for (int i = (1); i <= (n); ++i) fac[i] = fac[i - 1] * i;
  for (int i = (1); i <= (n - 1); ++i)
    scanf("%d%d", &u, &v), add(u, v), add(v, u);
  for (int i = (1); i <= (n); ++i) {
    dfs(i, 0);
    printf("%.10lf\n", double(dp[i][n - 1] / fac[n - 1]));
  }
  return 0;
}
