NAX = 110
n = 0
edges_f = [[] for _ in range(NAX)]
edges_b = [[] for _ in range(NAX)]
cycle_counts = [0] * NAX
def read_input():
global n
n = int(input())
for i in range(1, n+1):
x = input().split(" ")
for l in x[1:]:
l = int(l)
edges_f[i].append(l)
edges_b[l].append(i)
res = 1
def update(idx: int):
global res
global cycle_counts
if idx == 1:
cycle_counts[1] = 1
res = max(1, len(edges_f[1]))
return
if len(edges_b[idx]) == 0 or len(edges_f[idx]) == 0:
return # co jeśli to da true dla idx == 1?
count = 0
for i in edges_b[idx]:
count += cycle_counts[i]
edges_f_len = len(edges_f[idx])
# print(f"{count=}")
where = count
li = 1
while where % edges_f_len != 0:
where += count
li += 1
cycle_counts[idx] = where // edges_f_len
for i in range(1, idx):
cycle_counts[i] *= li
res *= li
def main() -> None:
read_input()
for i in range(1, n+1):
update(i)
# print(f"after {i}")
# print(cycle_counts[1:n+1])
print(res)
if __name__ == "__main__":
main()
"""
7
3 2 3 5
2 3 6
3 5 6 7
1 6
1 7
0
0
* 6
12
4 3 8 9 12
6 4 7 8 9 10 11
4 4 7 8 9
4 6 7 8 12
2 7 12
3 8 9 11
3 8 10 11
3 9 10 11
1 12
1 12
0
0
* 192
5
2 2 3
2 3 4
2 4 5
1 5
0
* 8
"""
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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | NAX = 110 n = 0 edges_f = [[] for _ in range(NAX)] edges_b = [[] for _ in range(NAX)] cycle_counts = [0] * NAX def read_input(): global n n = int(input()) for i in range(1, n+1): x = input().split(" ") for l in x[1:]: l = int(l) edges_f[i].append(l) edges_b[l].append(i) res = 1 def update(idx: int): global res global cycle_counts if idx == 1: cycle_counts[1] = 1 res = max(1, len(edges_f[1])) return if len(edges_b[idx]) == 0 or len(edges_f[idx]) == 0: return # co jeśli to da true dla idx == 1? count = 0 for i in edges_b[idx]: count += cycle_counts[i] edges_f_len = len(edges_f[idx]) # print(f"{count=}") where = count li = 1 while where % edges_f_len != 0: where += count li += 1 cycle_counts[idx] = where // edges_f_len for i in range(1, idx): cycle_counts[i] *= li res *= li def main() -> None: read_input() for i in range(1, n+1): update(i) # print(f"after {i}") # print(cycle_counts[1:n+1]) print(res) if __name__ == "__main__": main() """ 7 3 2 3 5 2 3 6 3 5 6 7 1 6 1 7 0 0 * 6 12 4 3 8 9 12 6 4 7 8 9 10 11 4 4 7 8 9 4 6 7 8 12 2 7 12 3 8 9 11 3 8 10 11 3 9 10 11 1 12 1 12 0 0 * 192 5 2 2 3 2 3 4 2 4 5 1 5 0 * 8 """ |
English