#include <bits/stdc++.h>
using namespace std;
const int MAXSIZE = 10000020;
int bufpos;
char buf[MAXSIZE];
void init() {
  buf[fread(buf, 1, MAXSIZE, stdin)] = '\0';
  bufpos = 0;
}
int readint() {
  int val = 0;
  for (; !isdigit(buf[bufpos]); bufpos++)
    ;
  for (; isdigit(buf[bufpos]); bufpos++) val = val * 10 + buf[bufpos] - '0';
  return val;
}
char readchar() {
  for (; isspace(buf[bufpos]); bufpos++)
    ;
  return buf[bufpos++];
}
int readstr(char* s) {
  int cur = 0;
  for (; isspace(buf[bufpos]); bufpos++)
    ;
  for (; !isspace(buf[bufpos]); bufpos++) s[cur++] = buf[bufpos];
  s[cur] = '\0';
  return cur;
}
vector<int> e[52];
double dp[52][52];
int sz[52];
double c[52][52], pre[52][52];
void dfs(int u, int fa) {
  sz[u] = 0;
  dp[u][0] = 1;
  for (const auto& v : e[u]) {
    if (v == fa) continue;
    dfs(v, u);
    for (int i = sz[u]; i >= 0; i--) {
      double t = dp[u][i];
      dp[u][i] = 0;
      for (int j = sz[v]; j >= 0; j--)
        dp[u][i + j] += t * dp[v][j] *
                        (c[i + j][j] * c[sz[u] + sz[v] - i - j][sz[v] - j] /
                         c[sz[u] + sz[v]][sz[u]]);
    }
    sz[u] += sz[v];
  }
  if (fa) {
    static double g[53];
    g[sz[u] + 1] = 0;
    for (int i = sz[u]; i >= 0; i--) g[i] = dp[u][i] + g[i + 1];
    sz[u]++;
    for (int i = 0; i <= sz[u]; i++) {
      if (i)
        dp[u][i] = (g[i - 1] - g[i]) * i / sz[u];
      else
        dp[u][i] = 0;
      dp[u][i] += g[i] * 0.5 / sz[u];
    }
  }
}
int main() {
  init();
  int n = readint();
  for (int i = 1; i < n; i++) {
    int u = readint(), v = readint();
    e[u].push_back(v);
    e[v].push_back(u);
  }
  c[0][0] = pre[0][0] = 1;
  for (int i = 1; i <= n; i++) {
    c[i][0] = pre[i][0] = 1;
    for (int j = 1; j <= i; j++) {
      c[i][j] = c[i - 1][j] + c[i - 1][j - 1];
      pre[i][j] = pre[i][j - 1] + c[i][j];
    }
  }
  for (int i = 1; i <= n; i++) {
    memset(dp, 0, sizeof(dp));
    dfs(i, 0);
    printf("%.10f\n", dp[i][0]);
  }
}
