for(int c=0;c<26;++c)if(ac[0][c])q[qt++]=ac[0][c],fail[ac[0][c]]=0;
while(qh!=qt){
const int x=q[qh++];
for(int c=0;c<26;++c){
if(ac[x][c])q[qt++]=ac[x][c],fail[ac[x][c]]=ac[fail[x]][c];
else ac[x][c]=ac[fail[x]][c];
}
}
原文:https://www.cnblogs.com/happyguy/p/14188231.html