【Moban】后缀自动机(SAM)模板
在学会后缀自动机之前,要学会熟练掌握WA自动机,TLE自动机,RE自动机以及各种爆0的技巧。
int push(int val)
{
mx[++tot] = val;
return tot;
}
void extend(int t)
{
int np,nq,p,q;
np = push(mx[las]+1);
for(p=las;p&&(!son[p][t]);p=par[p]) son[p][t]=np;
if(!p) par[np] = rt;
else
{
q = son[p][t];
if(mx[p]+1==mx[q])
{
par[np] = q;
}
else
{
nq = push(mx[p]+1);
memcpy(son[nq],son[q],sizeof(son[q]));
par[nq] = par[q]; par[q] = par[np] = nq;
for(;p&&son[p][t]==q;p=par[p]) son[p][t] = nq;
}
}
las = np;
}

浙公网安备 33010602011771号