传统题 1000ms 256MiB

诚实者

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

nn 个人,每个人的编号从 11nn。每个人分为两类:

  • 诚实者:一定说真话
  • 不诚实者:说的话真假不定。可能真也可能假。

ii 个人做了 aia_i 条证言。其中第 jj 条证言由两个整数 xxyy 表示:

  • y=1y = 1 时,表示 第 xx 个人是诚实者
  • y=0y = 0 时,表示 第 xx 个人是不诚实的。

求在这 nn 个人中,最多可能有多少个诚实者?

输入格式

第一行输入 nn 代表人的个数。

接下来若干个行:

  • 首先输入一个数字 aia_i 代表第 ii 个人证言数量。
  • 接下来 aia_i 行,每行两个整数 x,yx,y,表示第 ii 个人对于第 xx 个人的一个证言。
    • y=0y=0,第 ii 个人认为第 xx 个人不诚实。反之是诚实的。

输出格式

输出可能存在的诚实者的最大人数。

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

提示

数据范围

对于所有的数据满足:

  • 1n151 \leq n \leq 15
  • 0ain10 \leq a_i \leq n - 1

样例解释 1

  • 33 个人,编号分别为 1231、2、3
  • 11 个人有 11 条证言,内容是:“第 22 个人是诚实者”。
  • 22 个人有 11 条证言,内容是:“第 11 个人是诚实者”。
  • 33 个人有 11 条证言,内容是:“第 22 个人是不诚实者”。

分析

假设第 11 个人和第 22 个人都是诚实者:

  • 因为第 11 个人诚实,他说“第 22 个人是诚实者”是真的,所以第 22 个人确实诚实。
  • 因为第 22 个人诚实,他说“第 11 个人是诚实者”也是真的,所以第 11 个人确实诚实。
  • 33 个人的证言不影响,因为第 33 个人不诚实,他说“第 22 个人不诚实”是假的,符合设定。
  • 这样第 11 和第 22 个人是诚实者,第 33 个人是不诚实者。

因此 诚实者最大数量是 22

样例解释 2

  • 33 个人,编号 1231、2、3
  • 他们的证言相互矛盾,例如:
    • 11 号说 22 号诚实,33 号不诚实;
    • 22 号说 33 号诚实,11 号不诚实;
    • 33 号说 11 号诚实,22 号不诚实。

尝试假设任何一个人是诚实者都会导致矛盾,因为他们的证言互相否定。

结论: 无法找到符合所有证言的诚实者组合,最大诚实者人数为 00

day10测试

未参加
状态
已结束
规则
IOI
题目
9
开始于
2025-8-10 14:30
结束于
2025-8-10 17:30
持续时间
3 小时
主持人
参赛人数
32