Problem
【POI2000】病毒
Description
二进制病毒审查委员会最近发现了如下的规律:某些确定的二进制串是病毒的代码。如果某段代码中不存在任何一段病毒代码,那么我们就称这段代码是安全的。现在委员会已经找出了所有的病毒代码段,试问,是否存在一个无限长的安全的二进制代码。
示例:
如果为病毒代码段,那么一个可能的无限长安全代码就是。
如果为病毒代码段,那么就不存在一个无限长的安全代码。
任务:
请写一个程序
- 读入病毒代码
- 判断是否存在一个无限长的安全代码
- 将结果输出
Input
第一行包括一个整数,表示病毒代码段的数目。
以下的行每一行都包括一个非空的字符串就是一个病毒代码段。
所有病毒代码段的总长度不超过。
Output
Sample Input
1 | 3 |
Sample Output
1 | NIE |
标签:AC自动机
Solution
首先显然需要建自动机。
然后,在此自动机形成的上,一个符合题意的无限长的串一定对应一个环,并且换上没有任何一个结点有结束标记。因此直接在上,暴力找解即可。
Code
1 |
|