QOJ.ac

QOJ

حد الوقت: 30.0 s حد الذاكرة: 256 MB مجموع النقاط: 100

#17517. Membership Management

الإحصائيات

Peter 是 Agile Change Management (ACM) Inc. 的高级经理,这里的每位员工都是一个或多个任务组的成员。由于 ACM 采用敏捷管理,任务组经常重组,成员也频繁变动,因此成员管理一直是让他头疼的问题。

每当发生变化时,Peter 都会更新成员信息。例如,他写的以下内容表示 Carol 和 Alice 是 Design 组的成员:

design:carol,alice.

冒号前面的名称是组名,后面的名称指定了其成员。

较小的任务组可以包含在较大的任务组中。因此,一个组名可以作为另一个组的成员出现,例如:

development:alice,bob,design,eve.

简单地展开上述 design 组,可以得到以下与原定义等价的成员说明:

development:alice,bob,carol,alice,eve.

然而,在这种情况下,alice 出现了两次。在去重之后,我们得到了以下更简练的说明:

development:alice,bob,carol,eve.

你在本题中的任务是编写一个程序,在给定各组的定义后,确定指定组中的成员(员工)数量。

请注意,Peter 的定义中可能包含深度嵌套的组。例如,在下文中,one 组仅包含一名成员 dave

one:another. another:yetanother. yetanother:dave.

输入格式

输入包含多组测试数据。每组数据的格式如下:

$$n$$ $$\text{group}_1:\text{member}_{1,1}, \dots, \text{member}_{1,m_1}.$$ $$\vdots$$ $$\text{group}_i:\text{member}_{i,1}, \dots, \text{member}_{i,m_i}.$$ $$\vdots$$ $$\text{group}_n:\text{member}_{n,1}, \dots, \text{member}_{n,m_n}.$$

第一行包含一个正整数 $n$,表示组的数量,满足 $1 \le n \le 100$。

接下来的 $n$ 行,每行包含一个组的成员信息:$\text{group}_i$ ($1 \le i \le n$) 是第 $i$ 个任务组的名称,后跟一个冒号(:),然后是由逗号(,)分隔并以句点(.)结尾的 $m_i$ 个成员列表。

这些组名两两不同。每个 $m_i$ ($1 \le i \le n$) 都在 $1$ 到 $10$ 之间(包含边界)。

如果一个成员的名称是 $\text{group}_1, \text{group}_2, \dots, \text{group}_n$ 中的一个,则它代表另一个组的名称;否则,它代表一名员工的名字。

不存在循环(或递归)的组定义。你可以假设一个组内的 $m_i$ 个成员名称两两不同。

每个组名或员工姓名都是一个长度在 $1$ 到 $15$ 之间(包含边界)的非空字符串,且仅由小写字母组成。

输入结束由仅包含一个零(0)的一行表示。

输出格式

对于每组测试数据,在一行中输出该数据中第一个组(即 $\text{group}_1$)所包含的员工(个人,而非组)数量。输出中不应包含多余的字符。

样例

输入样例 1

2
development:alice,bob,design,eve.
design:carol,alice.
3
one:another.
another:yetanother.
yetanother:dave.
3
friends:alice,bob,bestfriends,carol,fran,badcompany.
bestfriends:eve,alice.
badcompany:dave,carol.
5
a:b,c,d,e.
b:c,d,e,f.
c:d,e,f,g.
d:e,f,g,h.
e:f,g,h,i.
4
aa:bb.
cc:dd,ee.
ff:gg.
bb:cc.
0

输出样例 1

4
1
6
4
2

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.