病毒侵袭
题意:N个病毒编码,M个网站编码,问每个网站编码中包含那几种病毒;
思路:多串匹配多串,很明显是AC自动机,而且是个模板题;
之前写使用的指针写的,结果ML了,然后就找到了一个不用指针的模板,将指针改为了二维数组,这样就不会ML了;
#include <bits/stdc++.h>
using namespace std;
int n, m;
struct Trie{
int next[100010][128], fail[100010], end[100010];
int root, L;
int new_node(){
for(int i=0; i<128; i++){
next[L][i]=-1;
}
fail[L]=-1;
end[L++]=-1;
return L-1;
}
void init(){
L=0;
root=new_node();
}
void insert(char *s, int id){
int p=root, q;
int len=strlen(s);
int x;
for(int i=0; i<len; i++){
x=s[i];
if(next[p][x]==-1){
q=new_node();
next[p][x]=q;
}
p=next[p][x];
}
end[p]&