#P3514. The Writers' Club
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