import math
from fractions import Fraction
from typing import List
def solve(n: int, links: List[List[int]]) -> int:
links_rev = [[] for _ in range(n)]
for i in range(n):
for j in links[i]:
links_rev[j].append(i)
fracs = []
for i in range(n):
frac = Fraction(int(i == 0), 1)
for j in links_rev[i]:
frac += fracs[j]
if links[i]:
frac /= len(links[i])
fracs.append(frac)
lcm = 1
for frac in fracs:
lcm = math.lcm(lcm, frac.denominator)
return lcm
def main():
n = int(input())
links = [
[int(id) - 1 for id in input().split(" ")[1:]]
for _ in range(n)
]
print(solve(n, links))
main()
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 | import math from fractions import Fraction from typing import List def solve(n: int, links: List[List[int]]) -> int: links_rev = [[] for _ in range(n)] for i in range(n): for j in links[i]: links_rev[j].append(i) fracs = [] for i in range(n): frac = Fraction(int(i == 0), 1) for j in links_rev[i]: frac += fracs[j] if links[i]: frac /= len(links[i]) fracs.append(frac) lcm = 1 for frac in fracs: lcm = math.lcm(lcm, frac.denominator) return lcm def main(): n = int(input()) links = [ [int(id) - 1 for id in input().split(" ")[1:]] for _ in range(n) ] print(solve(n, links)) main() |
English