#include <bits/stdc++.h>
using namespace std;
const int N = 55;
int n, siz[N];
vector<int> e[N];
double f[N][N], sav[N], C[N][N], fac[N];
void dfs(int x, int fa) {
  siz[x] = 0, f[x][0] = 1;
  for (const int &v : e[x])
    if (v != fa) {
      dfs(v, x), ++siz[v];
      double sum = 0, o;
      for (int a = (0); a <= (siz[v]); a++)
        o = f[v][a], f[v][a] = f[v][a] * (siz[v] - a) + sum / 2, sum += o;
      for (int a = (0); a <= (siz[x]); a++)
        for (int b = (0); b <= (siz[v]); b++)
          sav[a + b] += C[a + b][a] *
                        C[(siz[x] - a) + (siz[v] - b)][siz[x] - a] * f[x][a] *
                        f[v][b];
      siz[x] += siz[v];
      for (int a = (0); a <= (siz[x]); a++) f[x][a] = sav[a], sav[a] = 0;
    }
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cout.precision(12), cout << fixed;
  cin >> n;
  fac[0] = C[0][0] = 1;
  for (int i = (1); i <= (n); i++) fac[i] = fac[i - 1] * i, C[i][0] = 1;
  for (int i = (1); i <= (n); i++)
    for (int j = (1); j <= (i); j++) C[i][j] = C[i - 1][j] + C[i - 1][j - 1];
  for (int i = 1, u, v; i < n; i++)
    cin >> u >> v, e[u].push_back(v), e[v].push_back(u);
  for (int i = (1); i <= (n); i++)
    memset(f, 0, sizeof(f)), dfs(i, -1),
        cout << f[i][n - 1] / fac[n - 1] << "\n";
  return 0;
}
