#P1500. 2024.06.19-暑期实习-第一题-批量初始化次数

2024.06.19-暑期实习-第一题-批量初始化次数

题目描述

塔子哥是一名资深软件工程师,他正在开发一个代码依赖分析工具。这个工具需要分析软件模块之间的依赖关系,用来优化代码的编译和构建过程。

在该工具中,"批量构建"是指将多个没有依赖关系的模块一次性进行编译和构建。例如,如果模块 AA 依赖模块 BBCC,模块 DD 依赖模块 CC,但模块 BBDD 之间没有依赖关系,则需要先"批量构建"模块 BBCC,再分别构建模块 AADD

现在,给定一组模块间的依赖关系,请你帮助塔子哥计算需要"批量构建"的最少次数。

输入格式

第一行只有一个正整数 NN,表示模块总数。

随后的 NN 行依次表示模块 11NN 的依赖关系。每行的第一个数据 KiK_i 表示模块 ii 依赖的模块数量,之后跟着 KiK_i 个整数,表示模块 ii 依赖的模块编号。模块编号的取值范围为 [1,N][1,N],且每行中的模块编号各不相同。

输出格式

输出"批量构建"的最少次数。若存在循环依赖导致无法完成构建,则输出 1-1

样例输入1

5
3 2 3 4
1 5
1 5
1 5
0

样例输出1

3

样例输入2

3
1 2
1 3
1 1

样例输出2

-1

评测数据与规模

  • 1N10001 \leq N \leq 1000
  • 0Ki<N0 \leq K_i < N
  • 输入数据保证模块编号在 [1,N][1,N] 范围内,且不存在自依赖的情况。