【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; }