#include <bits/stdc++.h>
using namespace std;
int N;
vector<int> Adj[51];
double C[51][51];
double F[51][51];
int Dfs(int u, int p) noexcept {
  F[u][0] = 1;
  auto zu = 1;
  for (auto v : Adj[u])
    if (v != p) {
      auto zv = Dfs(v, u);
      double T[51];
      for (auto j = 0; j <= zv; ++j) {
        T[j] = (zv - j) * F[v][j];
        for (auto k = 0; k < j; ++k) T[j] += F[v][k] / 2;
      }
      for (auto i = zu; i--;) {
        for (auto j = 1; j <= zv; ++j)
          F[u][i + j] +=
              F[u][i] * T[j] * C[i + j][j] * C[zu - i - 1 + zv - j][zv - j];
        F[u][i] *= T[0] * C[zu - i - 1 + zv][zv];
      }
      zu += zv;
    }
  return zu;
}
int main() {
  scanf("%d", &N);
  for (auto i = 1; i < N; ++i) {
    int u, v;
    scanf("%d%d", &u, &v);
    Adj[u].emplace_back(v);
    Adj[v].emplace_back(u);
  }
  C[0][0] = 1;
  for (auto i = 1; i <= N; ++i) {
    C[i][0] = 1;
    for (auto j = 1; j <= N; ++j) C[i][j] = C[i - 1][j] + C[i - 1][j - 1];
  }
  double fac = 1;
  for (auto i = 2; i < N; ++i) fac *= i;
  for (auto u = 1; u <= N; ++u) {
    memset(F, 0, sizeof(F));
    Dfs(u, 0);
    printf("%.8f\n", F[u][N - 1] / fac);
  }
  return 0;
}
