QOJ.ac

QOJ

時間限制: 2 s 記憶體限制: 1024 MB 總分: 14

#5775. 混合碗

统计

你正在按照食谱准备午餐。

食谱是通过将多种配料混合在一个碗中制成的。每种配料要么是:

  • 另一种必须先在单独的碗中制成的混合物;或者
  • 你厨房里已有的基础配料,可以直接添加。

要制作一种混合物,你需要准备好它所有的配料,拿一个空碗,将配料混合在里面。不能通过向碗中已有的混合物添加配料来制作混合物。

例如,如果你想用 CAKEMIX(一种混合物)和 lies(一种基础配料)制作 CAKE(一种混合物),那么你必须先在自己的碗中制作 CAKEMIX,然后将 CAKEMIX 和 lies 加入第二个碗中来制作 CAKE。

一旦你将一种混合物作为配料使用并清空了准备它的碗,你就可以将该碗重新用于另一种混合物。因此,准备食谱所需的碗的数量取决于你决定制作混合物的顺序。

确定你所需的最少碗的数量。

输入格式

第一行包含一个整数 $C$,表示输入文件中的测试用例数量。

对于每个测试用例:

  • 第一行包含一个整数 $N$,表示该测试用例中混合物的数量。
  • 接下来 $N$ 行,每行对应一种混合物,包含:
    • 一个字符串,表示混合物的名称;
    • 一个整数 $M$,表示该混合物中配料的数量;
    • $M$ 个字符串,表示该混合物每种配料的名称。

同一行中的标记由单个空格分隔。

测试用例中的第一个混合物就是你要制作的最终食谱。

混合物的名称是长度在 1 到 20 之间的全大写字母字符串。

基础配料的名称是长度在 1 到 20 之间的全小写字母字符串。

每种混合物恰好被用于另一种混合物中,食谱本身除外(食谱不被用于任何其他混合物中)。每种配料在混合物的配料列表中最多出现一次。没有任何混合物会(直接或间接地)需要它自身作为配料。

输出格式

对于每个测试用例,输出一行 "Case #$X$: $Y$",其中 $X$ 是测试用例编号(从 1 开始),$Y$ 是所需的最少混合碗数量。

数据范围

时间限制:2 秒。 内存限制:1GB。

$1 \le C \le 10$ $2 \le M \le 10$

小数据集(测试集 1 - 可见;5 分)

$1 \le N \le 10$

大数据集(测试集 2 - 隐藏;9 分)

$1 \le N \le 1000$

样例

输入 1

2
3
SOUP 3 STOCK salt water
STOCK 2 chicken VEGETABLES
VEGETABLES 2 celery onions
5
MILKSHAKE 4 milk icecream FLAVOR FRUIT
FRUIT 2 banana berries
FLAVOR 2 SPICES CHOCOLATE
SPICES 2 nutmeg cinnamon
CHOCOLATE 2 cocoa syrup

输出 1

Case #1: 2
Case #2: 3

说明

在第一个案例中,为了满足你对 SOUP 的渴望,你遵循以下步骤:

  1. 在碗中混合 celery 和 onions 制作 VEGETABLES。
  2. 在第二个碗中混合 chicken 和来自第一个碗的 VEGETABLES 制作 STOCK。第一个碗变空。
  3. 在第一个碗中混合 STOCK、salt 和 water 制作 SOUP。

在第二个案例中,在将 FLAVOR 和 FRUIT 与 milk 和 icecream 混合制作 MILKSHAKE 之前,你可以选择先制作 FLAVOR 还是 FRUIT。

如果我们先制作 FRUIT,我们需要四个碗:

  1. 在碗中混合 banana 和 berries 制作 FRUIT。
  2. 在第二个碗中混合 nutmeg 和 cinnamon 制作 SPICES,在第三个碗中混合 cocoa 和 syrup 制作 CHOCOLATE。(顺序不限)
  3. 在第四个碗中混合 SPICES 和 CHOCOLATE 制作 FLAVOR。
  4. 在第二个或第三个碗中混合 FRUIT、FLAVOR、milk 和 icecream 制作 MILKSHAKE。

然而,如果我们先制作 FLAVOR 再制作 FRUIT,我们只需要三个碗:

  1. 在碗中混合 nutmeg 和 cinnamon 制作 SPICES,在第二个碗中混合 cocoa 和 syrup 制作 CHOCOLATE。(顺序不限)
  2. 在第三个碗中混合 SPICES 和 CHOCOLATE 制作 FLAVOR。
  3. 在第一个碗中混合 banana 和 berries 制作 FRUIT。
  4. 在第二个碗中混合 FRUIT、FLAVOR、milk 和 icecream 制作 MILKSHAKE。

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.