QOJ.ac

QOJ

时间限制: 2 s 内存限制: 1024 MB 总分: 100

#15553. Tag

统计

每天,有 $N$ 名查尔姆斯(Chalmers)的学生聚集在 Kemigården 玩抓人游戏(tag)。在这个游戏中,会有一名“追逐者”(hunter)。当这个人抓到(tag)另一个人时,被抓的人就会变成新的追逐者。在玩了几局之后,你发现有些不对劲。具体来说,你注意到游戏中的追逐者突然比应有的数量多了很多。

如果每个人都遵守规则,游戏中应该始终只有恰好一名追逐者。然而,前几天游戏失控了,突然有十几个嗜血的工程系学生在追着你。

你意识到,有些学生即使自己不是追逐者,也一定在抓其他人。

现在你想找出哪些学生以这种方式作弊了。如果一个学生在明知自己不是追逐者的情况下抓了另一个学生,那么这个学生就作弊了。幸运的是,昨天你非常仔细地记录了参与游戏的人员以及谁抓了谁。在收集了这些信息之后,你现在准备写一个程序来告诉你哪些学生作弊了。

输入格式

第一行包含两个整数 $N$ 和 $M$($2 \le N \le 10^5$,$1 \le M \le 10^5$),分别表示参与游戏的学生人数以及一个学生抓另一个学生的次数。

接下来一行包含 $N$ 个用空格隔开的名字 $s_1, \dots, s_N$,表示参与游戏的学生。每个名字由 $1$ 到 $20$ 个字符组成,且仅包含字母 a-z。所有名字都是唯一的。列表中的第一个名字是游戏开始时的追逐者。

最后有 $M$ 行,每行格式为 $s_i$ tar $s_j$(其中 $s_i \neq s_j$),表示 $s_i$ 抓了 $s_j$。这些行按时间顺序指示了学生之间互相抓人的过程。由于你非常仔细地观察了游戏,你确定自己没有遗漏任何抓人记录。

输出格式

首先输出一个整数,表示作弊的学生人数。

接下来在下一行中,输出作弊学生的名字,按字典序升序排列,用空格隔开。

子任务

您的解法将在若干个测试点结合(子任务)上进行测试。要获得某个子任务的分数,您的解法必须通过该子任务中的所有测试用例。

子任务 分值 限制
1 10 $M = 1$
2 15 $N = 2$
3 15 joshua 参与了游戏,且要么无人作弊,要么只有 joshua 作弊。
4 20 $N \le 200$
5 40 无附加限制。

说明

样例 1 说明

最开始,olle 是追逐者。这意味着当 alexanderjoshua 时,alexander 作弊了。在此之后,ollejoshua 都认为自己是追逐者。由于 joshua 认为自己是追逐者,所以当他抓 alexander 时,他并没有作弊。最后,olle 抓了 joshua,在此之后 joshuaalexander 都认为自己是追逐者。结论是,唯一作弊的人是 alexander

样例

输入样例 1

3 3
olle joshua alexander
alexander tar joshua
joshua tar alexander
olle tar joshua

输出样例 1

1
alexander

输入样例 2

5 7
nils olle joshua fredrik alexander
nils tar olle
nils tar fredrik
nils tar alexander
joshua tar nils
alexander tar nils
fredrik tar nils
olle tar nils

输出样例 2

2
joshua nils

输入样例 3

3 4
olle joshua alexander
alexander tar olle
joshua tar alexander
olle tar joshua
olle tar alexander

输出样例 3

3
alexander joshua olle

输入样例 4

4 4
anna bosse carina dagmar
anna tar bosse
bosse tar carina
carina tar dagmar
dagmar tar anna

输出样例 4

0

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.