package main
import (
"fmt"
)
func mul(A, B []float64) []float64 {
if len(A) == 0 || len(B) == 0 {
return []float64{}
}
C := make([]float64, len(A)+len(B)-1)
for i, a := range A {
for j, b := range B {
C[i+j] += a * b
}
}
return C
}
func transform(P []float64) []float64 {
d := len(P) - 1
Q := make([]float64, d+2)
var constTerm float64 = 0
for i, p := range P {
constTerm += p / float64(i+1)
Q[i+1] = p * float64(2*(i+1)-1) / float64(2*(i+1))
}
Q[0] = constTerm / 2.0
return Q
}
func dfs(u, p int, adj [][]int) []float64 {
P := []float64{1.0}
for _, v := range adj[u] {
if v != p {
fv := dfs(v, u, adj)
P = mul(P, fv)
}
}
if p == 0 {
return P
}
return transform(P)
}
func main() {
var n int
if _, err := fmt.Scan(&n); err != nil {
return
}
adj := make([][]int, n+1)
for i := 0; i < n-1; i++ {
var u, v int
fmt.Scan(&u, &v)
adj[u] = append(adj[u], v)
adj[v] = append(adj[v], u)
}
for i := 1; i <= n; i++ {
P := dfs(i, 0, adj)
fmt.Printf("%.9f", P[0])
if i < n {
fmt.Print(" ")
}
}
fmt.Println()
}