#P3514. The Writers' Club

    ID: 2515 传统题 1000ms 256MiB 尝试: 3 已通过: 1 难度: 10 上传者: 标签>图结构图的遍历Arab and North Africa 2007

The Writers' Club

题目描述

忘掉 Facebook,忘掉 Second Life,下一个互联网热潮是「作家俱乐部(The Writers’ Club)」。这是一个供作家和短篇小说爱好者聚会、发表、阅读并讨论作品的线上平台。像其他网络社区一样,网站允许读者创建他们最喜欢的作家列表。

网站维护者注意到,读者往往会偏好他们喜爱的作家所喜爱的其他作家。例如,如果 John 喜欢 Alice 的故事,那么许多喜欢 John 故事的读者也往往会喜欢 Alice。更不用说,John 的读者也倾向于喜欢 Alice 喜爱的作家们。

网站希望基于这一观察建立一个推荐系统。继续上面的例子,网站希望将 Alice(以及 Alice 喜爱的作家、他们喜爱的作家,以此类推)推荐给所有 John 的读者。当然,这个推荐系统必须足够聪明,不能将读者已经喜爱的作家推荐给他自己。


输入

程序将被测试多个测试用例。每个测试用例的第一行包含两个正整数 $T$ 和 $N$,其中:

  • $T$ 是用户总数(不超过 $100,!000$);
  • $N$ 是作家数量(不超过 $100$)。

接下来的 $N$ 行,每行代表一个作家及其所有的“粉丝”(喜爱他的读者)。格式如下:

writer reader1 reader2 … readerd

其中 writer 是作家的名字,后续的 reader1 … readerd 是喜爱该作家的读者名字。

一个名字由一个或多个小写字母组成,长度不超过 $16$ 个字符。名字在测试用例中是唯一的。名字之间用一个或多个空格隔开。

输入的最后以一行 0 0 结束,表示不再有测试用例。


输出

对于每个测试用例,第一行输出如下格式:

--- CASE k

其中 $k$ 是测试用例编号(从 $1$ 开始),注意使用的是减号 -

接下来是零行或多行推荐信息,每行的格式如下:

writer reader1 reader2 ...

表示应将该 writer 推荐给这些 reader1 reader2 ...

输出要求如下:

  • 推荐的作家按 字典序(alphabetically)升序排列
  • 每位作家的推荐读者也按字典序升序排列;
  • 不应推荐某人自己作为作家;
  • 不应推荐读者已经喜爱的作家。

所有名字之间用一个空格分隔。


输入示例 1

7 3
john paul ringo
alice paul john bob
alice sunny cher
5 3
tantawi taha najeeb
aqqad najeeb ehsan
taha aqqad najeeb
0 0

--- CASE 1
alice ringo bob john paul ringo
--- CASE 2
taha ehsan tantawi
aqqad ehsan

来源

Arab and North Africa 2007