#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  cin >> n;
  vector<vector<int> > g(n);
  for (int u, v, i = 1; i < n; ++i)
    cin >> u >> v, --u, --v, g[u].push_back(v), g[v].push_back(u);
  vector<vector<long double> > dp(n);
  vector<long double> fac(n + 1);
  fac[0] = 1;
  for (int i = 1; i <= n; ++i) fac[i] = fac[i - 1] * i;
  auto C = [&](int n, int m) {
    return n < m || m < 0 ? (long double)0 : fac[n] / fac[m] / fac[n - m];
  };
  function<void(int, int)> DP = [&](int u, int p) {
    dp[u] = vector<long double>{1.0};
    for (int v : g[u])
      if (v != p) {
        DP(v, u);
        vector<long double> t(dp[v].size() + 1, 0);
        long double s;
        for (int j = 0; j < dp[v].size(); ++j)
          if (s = dp[v][j]) {
            t[j + 1] += s * (j + 1);
            for (int i = 0; i <= j; ++i) t[i] += s * .5;
          }
        vector<long double> pd(t.size() + dp[u].size() - 1, 0);
        for (int i = 0; i < dp[u].size(); ++i)
          for (int j = 0; j < t.size(); ++j) {
            pd[i + j] += C(i + j, i) *
                         C(dp[u].size() + dp[v].size() - 1 - (i + j),
                           dp[u].size() - 1 - i) *
                         t[j] * dp[u][i];
          }
        dp[u] = pd;
      }
    return;
  };
  auto solve = [&](int root) {
    DP(root, -1);
    return dp[root][0] / fac[n - 1];
  };
  for (int i = 0; i < n; ++i) cout << setprecision(8) << solve(i) << endl;
  return 0;
}
