#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-8;
const int inf = 0x3f3f3f3f;
const int Minf = 0x7f7f7f7f;
const long long INF = 0x3f3f3f3f3f3f3f3fll;
const long long MINF = 0x7f7f7f7f7f7f7f7fll;
const int N = 55;
vector<int> t[N];
double f[N][N];
double jc[N];
double C[N][N];
double g[N];
int siz[N], n;
void dp(int now, int fa) {
  siz[now] = 0;
  f[now][0] = 1;
  for (int to : t[now]) {
    if (to == fa) continue;
    dp(to, now);
    memset(g, 0, sizeof g);
    for (int i = (0); i <= siz[now]; ++i)
      for (int j = (0); j <= siz[to]; ++j)
        g[i + j] += f[now][i] * f[to][j] * C[i + j][i] *
                    C[siz[now] + siz[to] - i - j][siz[to] - j];
    siz[now] += siz[to];
    for (int i = (0); i <= siz[now]; ++i) f[now][i] = g[i];
  }
  ++siz[now];
  if (fa) {
    memset(g, 0, sizeof g);
    for (int i = (0); i < siz[now]; ++i) {
      g[i] += (siz[now] - i) * f[now][i];
      for (int j = (i + 1); j <= siz[now]; ++j) g[j] += 0.5 * f[now][i];
    }
    for (int i = (0); i <= siz[now]; ++i) f[now][i] = g[i];
  }
}
int main() {
  int x, y;
  scanf("%d", &n);
  for (int i = (2); i <= n; ++i)
    scanf("%d%d", &x, &y), t[x].push_back(y), t[y].push_back(x);
  jc[0] = 1;
  for (int i = (1); i <= n; ++i) jc[i] = jc[i - 1] * i;
  C[0][0] = 1;
  for (int i = (1); i <= n; ++i) {
    C[i][0] = 1;
    for (int j = (1); j <= i; ++j) C[i][j] = C[i - 1][j - 1] + C[i - 1][j];
  }
  for (int i = (1); i <= n; ++i) {
    dp(i, 0);
    printf("%.10f\n", f[i][n - 1] / jc[n - 1]);
  }
}
