1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
def solve(lines):
    first_count = int(lines[0])

    parent_specs = []
    level_sizes = [first_count]
    #print("!", lines)
    for line in lines[1:]:
        parts = list(map(int, line.split()))
        parents = parts[1:]
        parent_specs.append(parents)
        level_sizes.append(len(parents))

    curr_values = [1] * level_sizes[-1]
    best = sum(curr_values)

    for depth in range(len(parent_specs) - 1, -1, -1):
        prev_size = level_sizes[depth]
        acc = [0] * prev_size

        for child_value, p in zip(curr_values, parent_specs[depth]):
            if p != 0:
                acc[p - 1] += child_value
        prev_values = [x if x > 0 else 1 for x in acc]

        level_sum = sum(prev_values)
        if level_sum > best:
            best = level_sum

        curr_values = prev_values

    return best

k,n1 = input().split()
lines = [n1] +[input().strip() for _ in range(int(k)-1)]

ans = solve(lines)
print(ans)