← Home
#include<bits/stdc++.h>
using namespace std;
using f128=long double;
using poly=vector<f128>;
poly mul(poly f,poly g){
   poly h(f.size()+g.size()-1);
   for(int i=0;i<f.size();i++)for(int j=0;j<g.size();j++)
   h[i+j]+=f[i]*g[j];
   return h;
}
f128 calc(poly f,f128 x){f128 r=0;for(int i=f.size()-1;i>=0;i--)r=r*x+f[i];return r;}
poly Int(poly f){
   int n=f.size();f.push_back(0);
   for(int i=n;i;i--)f[i]=f[i-1]/i;f[0]=0;
   return f;
}
int n;
basic_string<int>G[60];
poly dfs(int u,int fa){
   poly f{1};
   for(int v:G[u])if(v!=fa){
      poly a=dfs(v,u),b=Int(a);
      b[0]=calc(b,1)/2;
      for(int i=1;i<b.size();i++)b[i]=a[i-1]-b[i]/2;
      f=mul(f,b);
   }return f;
}
int main(){
   cin>>n;
   for(int u,v,i=1;i<n;i++)scanf("%d%d",&u,&v),G[u]+=v,G[v]+=u;
   for(int i=1;i<=n;i++)printf("%.20Lf\n",dfs(i,0)[0]+1e-9);
   return 0;
}