#include <bits/stdc++.h>
using namespace std;
vector<int> v[100];
inline void add(int x, int y) { v[x].push_back(y); }
double tmp[100], C[100][100], dp[100][100], g[100];
int size[100];
void shai() {
  for (int i = 0; i < 51; ++i) {
    C[i][0] = C[i][i] = 1;
    for (int j = 1; j < i; ++j) C[i][j] = C[i - 1][j] + C[i - 1][j - 1];
  }
}
inline void dfs(int x, int ff) {
  size[x] = dp[x][0] = 1;
  for (int i = v[x].size() - 1; i >= 0; --i) {
    int to = v[x][i];
    if (to == ff) continue;
    dfs(to, x);
    for (int j = 0; j <= size[to]; ++j) {
      g[j] = 0;
      for (int k = 1; k <= size[to]; ++k) {
        if (k <= j)
          g[j] += dp[to][k - 1] / 2;
        else
          g[j] += dp[to][j];
      }
    }
    for (int j = 0; j < size[to] + size[x]; ++j) tmp[j] = 0;
    for (int j = 0; j < size[x]; ++j)
      for (int k = 0; k <= size[to]; ++k)
        tmp[j + k] += dp[x][j] * g[k] * C[j + k][j] *
                      C[size[x] - 1 - j + size[to] - k][size[x] - 1 - j];
    for (int j = 0; j < size[to] + size[x]; ++j) dp[x][j] = tmp[j];
    size[x] += size[to];
  }
}
int n, x, y;
double em[100];
int main() {
  shai();
  scanf("%d", &n);
  for (int i = 1; i < n; ++i) scanf("%d%d", &x, &y), add(x, y), add(y, x);
  em[0] = 1;
  for (int i = 1; i <= n; ++i) em[i] = em[i - 1] * i;
  for (int i = 1; i <= n; ++i) {
    dfs(i, 0);
    printf("%.10lf\n", dp[i][n - 1] / em[n - 1]);
  }
}
