import math
import sys
from collections import defaultdict
rev = defaultdict(list)
n = int(sys.stdin.readline())
deg = [0] * (n + 1)
for i in range(1, n+1):
line = sys.stdin.readline()
line = line.strip(' \n')
numbers = [int(x) for x in line.split(" ")]
deg[i] = numbers[0]
for v in numbers[1:]:
rev[v].append(i)
r = max(1, deg[1])
xs = [0, r]
for v in range(2, n + 1):
x = 0
for prev in rev[v]:
x += xs[prev] // deg[prev]
if x != 0:
mult = max(1, deg[v]) // math.gcd(max(1, deg[v]), x)
xs.append(x)
for i in range(0, len(xs)):
xs[i] = xs[i] * mult
r = r * mult
else:
xs.append(0)
print(r)
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 | import math import sys from collections import defaultdict rev = defaultdict(list) n = int(sys.stdin.readline()) deg = [0] * (n + 1) for i in range(1, n+1): line = sys.stdin.readline() line = line.strip(' \n') numbers = [int(x) for x in line.split(" ")] deg[i] = numbers[0] for v in numbers[1:]: rev[v].append(i) r = max(1, deg[1]) xs = [0, r] for v in range(2, n + 1): x = 0 for prev in rev[v]: x += xs[prev] // deg[prev] if x != 0: mult = max(1, deg[v]) // math.gcd(max(1, deg[v]), x) xs.append(x) for i in range(0, len(xs)): xs[i] = xs[i] * mult r = r * mult else: xs.append(0) print(r) |
English