#include <bits/stdc++.h>
using namespace std;
const int N = 52;
double c[N][N], f[N][N], f1[N], cur[N];
int n, sz[N];
vector<int> adj[N];
void dfs(int x, int p) {
  for (int i = 1; i < n; i++) {
    f[x][i] = 0;
  }
  f[x][0] = sz[x] = 1;
  for (int i : adj[x]) {
    if (i != p) {
      dfs(i, x);
      for (int j = 0; j < sz[x] + sz[i]; j++) {
        f1[j] = cur[j] = 0;
      }
      for (int j = 0; j <= sz[i]; j++) {
        for (int k = 0; k <= sz[i]; k++) {
          if (k < j) {
            cur[j] += f[i][j - 1] / sz[i];
          } else {
            cur[j] += 0.5 * f[i][k] / sz[i];
          }
        }
      }
      for (int j = 0; j < sz[x]; j++) {
        for (int k = 0; k <= sz[i]; k++) {
          f1[j + k] += f[x][j] * cur[k] * c[j][j + k] *
                       c[sz[x] - j - 1][sz[x] - j - 1 + sz[i] - k] /
                       c[sz[i]][sz[i] + sz[x] - 1];
        }
      }
      for (int j = 0; j < sz[x] + sz[i]; j++) {
        f[x][j] = f1[j];
      }
      sz[x] += sz[i];
    }
  }
}
signed main() {
  ios::sync_with_stdio(0);
  int i, j, k, l;
  cin >> n;
  for (i = 1; i < n; i++) {
    cin >> j >> k;
    adj[j].push_back(k);
    adj[k].push_back(j);
  }
  for (i = 0; i <= n; i++) {
    for (j = 0; j <= i; j++) {
      if (!j) {
        c[j][i] = 1;
      } else {
        c[j][i] = c[j][i - 1] + c[j - 1][i - 1];
      }
    }
  }
  for (i = 1; i <= n; i++) {
    dfs(i, i);
    cout << fixed << setprecision(9) << f[i][0] << '\n';
  }
}
