节点i:fa的孩子
fafail:父亲节点对应的失配指针
这样一句话:
如果不存在一个节点i
那么我们可以将那个节点设为fafail的值和i相同的儿子
保证存在性,就算是0也可以成功返回到根,因为0的所有儿子都是根。
题解中对应的CODE:
if(c[u][i])fail[c[u][i]]=c[fail[u]][i],q.push(c[u][i]);
else c[u][i]=c[fail[u]][i];
问,为什么将那个节点设为fafail的((值和i相同)的儿子)是最优的呢?
即这么做的原因