A. 推理 (infer)

内存限制:128 MiB 时间限制:1000 ms 输入文件:infer.in 输出文件:infer.out
题目类型:传统 评测方式:文本比较

题目描述

不知道出于什么原因,你要进行一些推理。

推理过程中你依次得到了 个结论。

这些结论分为类型 1 和类型 2。

类型 1:这就是个结论,没啥好说的。
类型 2:这个结论形如,第 个结论是正确 / 错误的,保证第 个结论是已经得到的。

具体来说,将这 个结论依次编号为 ,将给出 个结论的信息,具体格式如下:

  • :表示这是个类型 1 的结论。
  • :表示这是个类型 2 的结论,如果 表示第 个结论是正确的, 表示第 个结论是错误的,假设这是第 个结论,保证

显然类型 2 的结论的正确性依赖于类型 1 的结论的正确性。

但你并不能确定每个结论的正确性,你希望求出,在所有类型 1 结论的所有可能正确性中,你总共最多有多少个正确结论。

输入格式

从文件 infer.in 中读入。
第一行输入一个数
接下来 行,第 行表示的是结论 的信息。

输出格式

输出到文件 infer.out 中。
输出一行一个整数表示答案。

样例

样例输入 1

5
1
2 1 1
2 2 0
2 2 1
2 1 0

样例输出 1

3

样例解释 1

假如结论 1 是正确的,结论 2 认为结论 1 是错误的,则结论 2 是错误的,结论 5 是正确的,进而得出结论 3 是错误的,结论 4 是正确的,共有 3 个为正确结论。

样例输入 2

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

样例输出 2

4

样例解释 2

最优情况下,结论 1,2,3,5 是正确的。

样例 3

见附加文件,该样例满足测试点 的限制。

样例 4

见附加文件,该样例满足测试点 的限制。

数据范围与提示

对于 的数据,,保证第 1 个结论是类型 1 的结论,保证对于类型 2 的结论

测试点编号 特殊性质
只有第一个结论是类型 1 的结论
只有第一个结论是类型 1 的结论
保证对于类型 2 的结论