QOJ.ac

QOJ

حد الوقت: 1 s حد الذاكرة: 1024 MB مجموع النقاط: 25

#15287. 狼人

الإحصائيات

像往常一样,$N$ 个机器人正在玩狼人杀游戏,机器人的编号为 $1$ 到 $N$。这些机器人中恰好有 $W$ 个是狼人,其余的是平民。虽然狼人杀游戏包含多个环节,但我们只关注游戏中的一个发言阶段。

机器人会指控其他机器人是狼人,或者通过为其清白担保来保护其他机器人。

狼人知道彼此的身份,并且:

  • 狼人绝不会指控另一个狼人;
  • 被狼人保护的任何机器人也一定是狼人。

平民可以指控或保护任意类型的机器人。

一些额外的限制使我们的任务变得简单了一些:

  • 没有机器人会同时被指控和被保护。
  • 没有机器人会被指控或保护超过一次。
  • 如果机器人 $A$ 指控或保护机器人 $B$,则必有 $A < B$。

给你 $N$ 个机器人之间的所有指控和保护关系,其中恰好有 $W$ 个狼人。一种角色分配方案是指将每个机器人分别指定为狼人或平民。你的目标是计算有多少种角色分配方案满足上述所有约束条件。

输入格式

第一行包含三个整数(每个数之间用一个空格隔开):

  • $N$ ($1 \le N \le 200$),表示机器人的数量;
  • $W$ ($0 \le W \le N$),表示狼人的数量;
  • $M$ ($0 \le M < N$),表示指控和保护关系的数量。

接下来的 $M$ 行给出指控和保护关系。每行将是以下两种形式之一:

  • A a b 表示机器人 $a$ 指控机器人 $b$ 是狼人;
  • D a b 表示机器人 $a$ 保护机器人 $b$。

输出格式

输出与给定信息一致的角色分配方案数。由于这个数量可能非常大,你必须输出该答案模 $10^9 + 7$ 的结果。

数据范围

对于 $20\%$ 的测试数据,满足 $N \le 20$。

样例

输入样例 1

2 1 1
D 1 2

输出样例 1

1

说明 1

如果机器人 1 是狼人,那么机器人 2 也必须是狼人,这会导致狼人数量过多(因为 $W=1$)!因此唯一的可能性是机器人 2 是唯一的狼人。

输入样例 2

2 1 0

输出样例 2

2

说明 2

在没有任何信息的情况下,机器人 1 或机器人 2 都有可能是狼人。

输入样例 3

3 2 2
A 1 2
D 1 3

输出样例 3

2

说明 3

要么机器人 1 是狼人(这意味着机器人 2 是平民,且机器人 3 也是狼人),要么机器人 1 是平民(这允许机器人 2 和机器人 3 都是狼人)。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.