def find_final_label_probabilities(n: int, edges: List[Tuple[int, int]]) -> List[float]:
    """
    Consider a tree $T$ (that is, a connected graph without cycles) with $n$ vertices labelled $1$ through $n$. We start the following process with $T$: while $T$ has more than one vertex, do the following:
    
    
    
    choose a random edge of $T$ equiprobably;
    
    shrink the chosen edge: if the edge was connecting vertices $v$ and $u$, erase both $v$ and $u$ and create a new vertex adjacent to all vertices previously adjacent to either $v$ or $u$. The new vertex is labelled either $v$ or $u$ equiprobably.
    
    At the end of the process, $T$ consists of a single vertex labelled with one of the numbers $1, \ldots, n$. For each of the numbers, what is the probability of this number becoming the label of the final vertex?
    
    
    -----Input-----
    
    The first line contains a single integer $n$ ($1 \leq n \leq 50$).
    
    The following $n - 1$ lines describe the tree edges. Each of these lines contains two integers $u_i, v_i$ — labels of vertices connected by the respective edge ($1 \leq u_i, v_i \leq n$, $u_i \neq v_i$). It is guaranteed that the given graph is a tree.
    
    
    -----Output-----
    
    Print $n$ floating numbers — the desired probabilities for labels $1, \ldots, n$ respectively. All numbers should be correct up to $10^{-6}$ relative or absolute precision.
    
    
    -----Examples-----
    Input
    4
    1 2
    1 3
    1 4
    
    Output
    0.1250000000
    0.2916666667
    0.2916666667
    0.2916666667
    
    Input
    7
    1 2
    1 3
    2 4
    2 5
    3 6
    3 7
    
    Output
    0.0850694444
    0.0664062500
    0.0664062500
    0.1955295139
    0.1955295139
    0.1955295139
    0.1955295139
    
    
    
    -----Note-----
    
    In the first sample, the resulting vertex has label 1 if and only if for all three edges the label 1 survives, hence the probability is $1/2^3 = 1/8$. All other labels have equal probability due to symmetry, hence each of them has probability $(1 - 1/8) / 3 = 7/24$.
    """


# Tests

def check(find_final_label_probabilities):
    assert find_final_label_probabilities(4, [(1, 2), (1, 3), (1, 4)]) == [0.1250000000, 0.2916666667, 0.2916666667, 0.2916666667]
    assert find_final_label_probabilities(7, [(1, 2), (1, 3), (2, 4), (2, 5), (3, 6), (3, 7)]) == [0.0850694444, 0.0664062500, 0.0664062500, 0.1955295139, 0.1955295139, 0.1955295139, 0.1955295139]
    assert find_final_label_probabilities(1, []) == [1.0000000000]
    assert find_final_label_probabilities(10, [(9, 8), (7, 4), (10, 7), (6, 7), (1, 9), (4, 9), (9, 3), (2, 3), (1, 5)]) == [0.0716733902, 0.1568513416, 0.0716733902, 0.0513075087, 0.1568513416, 0.1496446398, 0.0462681362, 0.1274088542, 0.0186767578, 0.1496446398]
    assert find_final_label_probabilities(20, [(13, 11), (4, 12), (17, 16), (15, 19), (16, 6), (7, 6), (6, 8), (12, 2), (19, 20), (1, 8), (4, 17), (18, 12), (9, 5), (14, 13), (11, 15), (1, 19), (3, 13), (4, 9), (15, 10)]) == [0.0241401787, 0.0917954309, 0.0976743034, 0.0150433990, 0.1006279377, 0.0150716827, 0.0758016731, 0.0241290115, 0.0444770708, 0.0796739239, 0.0310518413, 0.0248005499, 0.0287209519, 0.0976743034, 0.0160891602, 0.0248310267, 0.0253902066, 0.0917954309, 0.0146375074, 0.0765744099]
    assert find_final_label_probabilities(30, [(15, 21), (21, 3), (22, 4), (5, 18), (26, 25), (12, 24), (11, 2), (27, 13), (11, 14), (7, 29), (10, 26), (16, 17), (16, 27), (16, 1), (3, 22), (5, 19), (2, 23), (4, 10), (8, 4), (1, 20), (30, 22), (9, 3), (28, 15), (23, 4), (4, 1), (2, 7), (5, 27), (6, 26), (6, 24)]) == [0.0047521072, 0.0089582002, 0.0091024503, 0.0005692947, 0.0158713738, 0.0231639046, 0.0280364616, 0.0385477047, 0.0508439275, 0.0104849699, 0.0280364616, 0.0756812249, 0.0527268460, 0.0663906850, 0.0348291400, 0.0067068947, 0.0473003760, 0.0620785158, 0.0620785158, 0.0431676433, 0.0225005681, 0.0055308416, 0.0101877956, 0.0354105896, 0.0520300528, 0.0099339742, 0.0093540308, 0.0748580820, 0.0663906850, 0.0444766827]
    assert find_final_label_probabilities(2, [(2, 1)]) == [0.5000000000, 0.5000000000]
    assert find_final_label_probabilities(3, [(2, 1), (3, 2)]) == [0.3750000000, 0.2500000000, 0.3750000000]
    assert find_final_label_probabilities(4, [(3, 1), (3, 2), (2, 4)]) == [0.3125000000, 0.1875000000, 0.1875000000, 0.3125000000]
check(find_final_label_probabilities)