#P13915. [PO Final 2024] 鬼抓人 / Tag

[PO Final 2024] 鬼抓人 / Tag

题目描述

每天,有 NN 名查尔姆斯的学生在 Kemigården 集合玩捉人游戏。在这个游戏中,有一个人是“猎人”,当这个人碰到其他人时,被碰到的人就会变成新的猎人。玩了几次之后,你意识到情况似乎不太对劲。也就是说,你注意到猎人的数量突然多了起来。如果大家都遵守规则,猎人应该始终只有一个。然而就在前几天,游戏失控了,突然有十几个嗜血的工科学生在追你。

你意识到一定有些学生在自己不是猎人的情况下仍然去碰别人。现在,你想要找出哪些学生做了这种作弊行为。如果一个学生在知道自己不是猎人的情况下仍然去碰别人,那么他就是“作弊者”。幸运的是,昨天你非常仔细地记录了参加游戏的学生以及是谁碰了谁。在收集了这些信息之后,你准备编写一个程序来找出哪些学生作弊了。

输入格式

第一行包含两个整数 NNMM2N1052 \leq N \leq 10^5, 1M1051 \leq M \leq 10^5),分别表示参加游戏的学生数量和发生的碰人次数。

接下来一行包含以空格分隔的学生名字 s1,...,sNs_1, ..., s_N。每个名字由 1201\sim20 个字符组成,只包含字母 az\texttt{a}\sim \texttt{z},且都互不相同。列表中的第一个名字是游戏开始时的猎人。

最后有 MM 行,每一行格式为「sis_i tar sjs_j」(其中 sisjs_i \neq s_j),表示 sis_i 碰了 sjs_j。这些行按时间顺序给出,表示整个游戏中所有发生的碰人事件。由于你观察得非常仔细,你确定没有漏掉任何一次碰人。

输出格式

首先输出一个整数,即作弊的学生数量。接着在下一行输出这些作弊学生的名字,按字典序排序。

3 3
olle joshua alexander
alexander tar joshua
joshua tar alexander
olle tar joshua
1
alexander
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
joshua nils
3 4
olle joshua alexander
alexander tar olle
joshua tar alexander
olle tar joshua
olle tar alexander
3
alexander joshua olle
4 4
anna bosse carina dagmar
anna tar bosse
bosse tar carina
carina tar dagmar
dagmar tar anna
0

提示

样例解释

样例 11 解释

一开始,olle 是猎人。这意味着 alexander 在碰到 joshua 时就是作弊。之后,olle 和 joshua 都认为自己是猎人。由于 joshua 认为自己是猎人,所以他在碰到 alexander 时并没有作弊。最后,olle 碰到 joshua,此后 joshua 和 alexander 都认为自己是猎人。结论是,唯一作弊的人是 alexander。

子任务

本题采用捆绑测试。

子任务编号 分值 限制
11 1010 M=1M = 1
22 1515 N=2N = 2
33 joshua 参加了游戏;要么没人作弊,要么只有 joshua 作弊
44 2020 N200N \leq 200
55 4040 无额外限制