题解 P9267 [PA 2022] Walizki
对于每个有传送带的平台
直接计算到达每个平台的行李箱数是困难的,但是根据上面的结论,到达每个平台的行李箱数都是其传送带数量的倍数,因此其连接的每条传送带传出的行李箱数也一定相等。
将最开始放在
对于一个拥有
传送带仅从较小编号的平台通向编号更大的平台,这保证了整个系统构成一个 DAG,使得我们可以按编号从小到大开始依次计算
对于每个有传送带的平台
由于平台的传送带采用循环调度,只有当上面这个数是
也即
不妨假设
可知
即为答案。
显然
from fractions import Fraction
from math import lcm
n = int(input())
to = []
for i in range(n):
to.append([j - 1 for j in list(map(int, input().split()))[1:]])
flow = [Fraction(1)] + [Fraction(0)] * (n - 1)
X = 1
for i in range(n):
if to[i]:
f = flow[i] / len(to[i])
X = lcm(f.denominator, X)
for j in to[i]: flow[j] += f
print(X)