在克隆节点后给当前节点的祖先换儿子时:
int cl = ++idx;
a[cl].ch = a[q].ch, a[cl].pa = a[q].pa, a[cl].len = a[p].len + 1;
a[q].pa = a[now].pa = cl;
while (~p && a[p].ch[c] == q) a[p].ch[c] = cl, p = a[p].pa;
其中最后一行忘记跳父亲,写成了:
while (~p && a[p].ch[c] == q) a[p].ch[c] = cl;
顺利 AC???