bzoj2938 [Poi2000]病毒
原题地址:http://www.lydsy.com/JudgeOnline/problem.php?id=2938
题意:
二进制病毒审查委员会最近发现了如下的规律:某些确定的二进制串是病毒的代码。如果某段代码中不存在任何一段病毒代码,那么我们就称这段代码是安全的。现在委员会已经找出了所有的病毒代码段,试问,是否存在一个无限长的安全的二进制代码。
示例:
例如如果{011, 11, 00000}为病毒代码段,那么一个可能的无限长安全代码就是010101…。如果{01, 11, 000000}为病毒代码段,那么就不存在一个无限长的安全代码。
任务:
请写一个程序:
l 读入病毒代码;
l 判断是否存在一个无限长的安全代码;
l 将结果输出
数据范围
所有病毒代码段的总长度不超过30000。
题解:
无限长的安全串,即 在不走单词结尾节点的情况下,能够无限地转移下去。
就是说,对于补全AC自动机,存在不包含单词结尾节点的环。
建出补全AC自动机, DFS找环即可。
代码: