#P1295. I hate SPAM, but some people love it

I hate SPAM, but some people love it

描述

如今,不幸的是,垃圾邮件正变得越来越常见。其中一些垃圾邮件可能具有倍增效应,因为它们要求你将其转发给所有朋友。有些垃圾邮件送上好运,有些垃圾邮件承诺你会变得富有,还有些垃圾邮件只是提醒你,告诉朋友你在乎这份友谊是多么重要。以下是一个垃圾邮件的示例:

发件人:爱丽丝
收件人:鲍勃,玛丽,朱莉娅,保罗

嗨,这是一封好运邮件。我希望你成为百万富翁,但这取决于你。如果你
* 将此邮件转发给 10 个或更多人,你将成为百万富翁
* 将此邮件转发给 5 个或更多人,你将变得富有
* 将此邮件转发给少于 5 个人,你将变得贫穷

正如我所说,这取决于你。撰写你的邮件并变得富有!:-)

爱丽丝

当人们收到垃圾邮件时,通常有两种不同的反应:

  1. 他们甚至不读就立即丢弃该消息(他们讨厌垃圾邮件);
  2. 他们将消息转发给他们认识的每个人(他们喜欢垃圾邮件)。

对于这个问题,我们假设每个人都喜欢垃圾邮件,但一个人永远不会转发相同的消息两次。每个垃圾邮件根据你转发消息的朋友数量会产生不同的效果。例如:一个垃圾邮件可能会说,如果你将消息转发给 5 个朋友,你会变穷;如果你转发给 10 个朋友,你会变得富有;如果你转发给 20 个朋友,你会成为世界上最富有的人,等等。

我们将只考虑与上述示例类似的垃圾邮件。更具体地说,一个垃圾邮件将定义两个阈值 T1T1T2T2 以及三个属性 A1A1A2A2A3A3。一个人根据为该特定垃圾邮件转发的消息数量获得三个属性之一。如果一个人转发 TT 条消息,且 T<T1T < T1,那么他/她的属性是 A1A1;如果 T1T<T2T1 \leq T < T2,那么他/她的属性是 A2A2;否则他/她的属性是 A3A3

你将得到一组人的名字,并且对于组中的每个人,会得到他/她认识的朋友的电子邮件地址集合。你还将得到一组不同的垃圾邮件,对于每个垃圾邮件,会得到它的阈值以及属性,还有关于哪个是垃圾邮件发起人的信息。

你必须编写一个程序,根据每个人转发的所有垃圾邮件,确定给定组中每个人获得的属性。

你可以假设垃圾邮件的发起人至少有一个朋友(换句话说,他/她将至少发送一条消息),并且一个人不会给自己发送消息。

输入

你的程序应该处理多个测试用例。每个测试用例的第一行包含一个整数 NN,表示组中的人数(2N202 \leq N \leq 20)。在输入中,一个人由 1 到 NN 的整数标识。接下来的 NN 行每行包含每个人的朋友列表(第 ii 行包含第 ii 个人的朋友列表)。第 ii 个人的朋友列表描述了第 ii 个人知道其电子邮件地址的朋友,由一个整数列表 FiFi1FiN1 \leq Fi \leq NFiiFi \neq i)组成,并以值 0(零)终止。朋友列表之后是垃圾邮件的描述(最多有 100 条消息)。每个描述出现在不同的行。描述由一个标识垃圾邮件发起人的整数 PP2PN2 \leq P \leq N)、两个表示阈值的整数 T1T1T2T2 以及三个属性 A1A1A2A2A3A3(每个属性是不超过 20 个字母的单词)组成。垃圾邮件列表以仅包含值 0(零)的一行结束。接下来的 NN 行每行包含一个名字,每个名字是不超过 20 个字母的单个单词。第 ii 行的名字是第 ii 个人的名字。当 N=0N = 0 时,表示输入结束。

输出

对于每个测试用例,你的程序应该输出一个名字列表,后面跟着他们获得的属性。你的程序应该按照输入中出现的顺序写出人的名字,后面跟着 : 和一个空格,再后面是根据他们发送的垃圾邮件得到的属性。属性应该按照输入中出现的顺序写出;每个属性后面应该跟着一个空格。

示例输入

5
2 3 0
1 3 5 4 0
5 0
0
4 1 0
1 2 4 poor rich millionaire
5 3 10 sad normal happy
0
Bob
Paul
Mary
Alice
Julia
6
2 0
1 3 0
1 2 4 0
1 2 3 5 0
1 2 3 4 0
1 3 4 0
1 2 4 red green blue
1 2 4 dumb normal smart
6 3 5 ugly bad good
0
Peter
Paul
Victoria
John
Julia
Anne
0 0

示例输出

Bob: rich sad
Paul: millionaire normal
Mary: poor sad
Alice: poor sad
Julia: rich sad
Peter: red dumb ugly
Paul: green normal ugly
Victoria: green normal bad
John: blue smart bad
Julia: blue smart bad
Anne: red dumb bad

来源

2002 年南美洲竞赛