#B0008. 诚实者
诚实者
题目描述
有 个人,每个人的编号从 到 。每个人分为两类:
- 诚实者:一定说真话
- 不诚实者:说的话真假不定。可能真也可能假。
第 个人做了 条证言。第 个人的第 条证言由两个整数 、 表示:
- 当 时,表示 第 个人是诚实者
- 当 时,表示 第 个人是不诚实的。
求在这 个人中,最多可能有多少个诚实者?
输入格式
第一行输入 代表人的个数。
接下来若干个行:
- 首先输入一个数字 代表第 个人证言数量。
- 接下来 行,每行两个整数 ,表示第 个人对于第 个人的一个证言。
- 当 ,第 个人认为第 个人不诚实。反之是诚实的。
输出格式
输出可能存在的诚实者的最大人数。
3
1
2 1
1
1 1
1
2 0
2
3
2
2 1
3 0
2
3 1
1 0
2
1 1
2 0
0
2
1
2 0
1
1 0
1
提示
数据范围
对于所有的数据满足:
样例解释 1
- 有 个人,编号分别为 。
- 第 个人有 条证言,内容是:“第 个人是诚实者”。
- 第 个人有 条证言,内容是:“第 个人是诚实者”。
- 第 个人有 条证言,内容是:“第 个人是不诚实者”。
分析
假设第 个人和第 个人都是诚实者:
- 因为第 个人诚实,他说“第 个人是诚实者”是真的,所以第 个人确实诚实。
- 因为第 个人诚实,他说“第 个人是诚实者”也是真的,所以第 个人确实诚实。
- 第 个人的证言不影响,因为第 个人不诚实,他说“第 个人不诚实”是假的,符合设定。
- 这样第 和第 个人是诚实者,第 个人是不诚实者。
因此 诚实者最大数量是 。
样例解释 2
- 有 个人,编号 。
- 他们的证言相互矛盾,例如:
- 号说 号诚实, 号不诚实;
- 号说 号诚实, 号不诚实;
- 号说 号诚实, 号不诚实。
尝试假设任何一个人是诚实者都会导致矛盾,因为他们的证言互相否定。
结论: 无法找到符合所有证言的诚实者组合,最大诚实者人数为 。