package main
import (
"bufio"
"fmt"
"os"
)
var n int
var g [][]int
func transform(a []float64) []float64 {
res := make([]float64, len(a)+1)
for k, v := range a {
d := float64(k + 1)
res[0] += 0.5 * v / d
res[k+1] += v * (1.0 - 0.5/d)
}
return res
}
func multiply(a, b []float64) []float64 {
res := make([]float64, len(a)+len(b)-1)
for i, x := range a {
for j, y := range b {
res[i+j] += x * y
}
}
return res
}
func solveRoot(r int) float64 {
var dfs func(int, int) []float64
dfs = func(v, p int) []float64 {
h := []float64{1.0}
for _, to := range g[v] {
if to == p {
continue
}
child := dfs(to, v)
h = multiply(h, transform(child))
}
return h
}
return dfs(r, 0)[0]
}
func main() {
in := bufio.NewReader(os.Stdin)
fmt.Fscan(in, &n)
g = make([][]int, n+1)
for i := 0; i < n-1; i++ {
var u, v int
fmt.Fscan(in, &u, &v)
g[u] = append(g[u], v)
g[v] = append(g[v], u)
}
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
for i := 1; i <= n; i++ {
if i > 1 {
fmt.Fprint(out, " ")
}
fmt.Fprintf(out, "%.10f", solveRoot(i))
}
fmt.Fprintln(out)
}