# Python 4 lyf
from fractions import Fraction
import math
n = int(input())
inadj = []
outdeg = []
# X = 1
for i in range(n):
inadj.append([])
for i in range(n):
arr = input().split()
ile = int(arr[0])
outdeg.append(ile)
# if ile: # broken with 0.
# X = math.lcm(X, ile)
# ^^ was in wrong place bcs included unreachables.
for x in range(ile):
inadj[int(arr[x + 1]) - 1].append(i)
dp = [Fraction(1, 1)]
res = 1
X = outdeg[0]
for i in range(1, n):
cr = Fraction(0, 1)
for x in inadj[i]:
cr += dp[x] / Fraction(outdeg[x], 1)
dp.append(cr)
# Actual fix:
# if outdeg[i] > 0: # sure > 1 tez could be.
# # res = math.lcm(res, (cr * Fraction(X, outdeg[i])).denominator)
# # fix:
# if cr:
# X = math.lcm(X, outdeg[i])
# Zakomentowanie ^^ i just having X == outdeg[0] and ; and nuitka3-run
# wal.py and alt+;+; and enter -> all tests passed
for i in range(1, n):
cr = dp[i]
if cr and outdeg[i] > 0:
res = math.lcm(res, (cr * Fraction(X, outdeg[i])).denominator)
# print(X)
# print(dp)
print(max(1, res * X))
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 38 39 40 41 42 43 44 45 | # Python 4 lyf from fractions import Fraction import math n = int(input()) inadj = [] outdeg = [] # X = 1 for i in range(n): inadj.append([]) for i in range(n): arr = input().split() ile = int(arr[0]) outdeg.append(ile) # if ile: # broken with 0. # X = math.lcm(X, ile) # ^^ was in wrong place bcs included unreachables. for x in range(ile): inadj[int(arr[x + 1]) - 1].append(i) dp = [Fraction(1, 1)] res = 1 X = outdeg[0] for i in range(1, n): cr = Fraction(0, 1) for x in inadj[i]: cr += dp[x] / Fraction(outdeg[x], 1) dp.append(cr) # Actual fix: # if outdeg[i] > 0: # sure > 1 tez could be. # # res = math.lcm(res, (cr * Fraction(X, outdeg[i])).denominator) # # fix: # if cr: # X = math.lcm(X, outdeg[i]) # Zakomentowanie ^^ i just having X == outdeg[0] and ; and nuitka3-run # wal.py and alt+;+; and enter -> all tests passed for i in range(1, n): cr = dp[i] if cr and outdeg[i] > 0: res = math.lcm(res, (cr * Fraction(X, outdeg[i])).denominator) # print(X) # print(dp) print(max(1, res * X)) |
English