ac自动机模板(makefail)
void makefail() {
for(int i=0,j=1;i<j;) {
int x=d[++i];
fo(k,0,25)
if (trie[x].son[k]) {
int y=trie[x].son[k];
if (x) {
int z=trie[x].next;
while (z&&!trie[z].son[k]) z=trie[z].next;
trie[y].next=trie[z].son[k];
}
if (!trie[y].sum) trie[y].sum=trie[trie[y].next].sum;d[++j]=y;
}
}
}