有若干所学校连接到一个计算机网络。这些学校之间达成了一些协议:每所学校维护一份分发软件的学校列表(“接收学校”)。请注意,如果学校 A 的分发列表中包含学校 B,那么学校 B 的列表中不一定会出现学校 A。
你需要编写一个程序,计算为了使软件根据协议覆盖网络中的所有学校,必须接收新软件的最小学校数量(子任务 A)。
作为进一步的任务,我们希望确保通过将新软件的副本发送到任意一所学校,该软件将覆盖网络中的所有学校。为了实现这个目标,我们可能需要通过新增成员来扩展接收者的列表。计算必须进行的最小扩展次数,以确保无论我们将新软件发送到哪所学校,它都能覆盖所有其他学校(子任务 B)。一次扩展意味着在一所学校的接收者列表中引入一个新成员
第一行包含一个整数 N:网络中学校的数量(2 \le N \le 100)。这些学校由前 N 个正整数标识。
接下来的 N 行描述接收者的列表。第 i+1 行包含学校 i 的接收者标识符。每个列表以 0 结束。一个空列表只包含一行 0。
你的程序应当向标准输出写入两行。
第一行应包含一个正整数:子任务 A 的解。
第二行应包含子任务 B 的解。
5 2 4 3 0 4 5 0 0 0 1 0
1 2