LuoguLOJ分析容易想到一个图论模型,即从每个 A 类串向它所支配的 B 类串连边,从每个 B 类串向以它为前缀的 A 类串连边,并将所有 A 类串的权值设为长度。这样问题变为求最长路,如果有环输出 -1。第一类边可以直接连,但第二类边暴力连显然不行,考虑一些优化。对反串建 SAM,此时 Parent 树上每个点的祖先都是它的前缀,于是我们只需要将树上每个 B 类串对应的节点向子树中所有...
AtCoder分析先考虑如果有一个点没有被操作过该怎么做。我们把这个点作为根,在两棵树上分别 DFS 一遍,那么如果有解的话答案一定是在两棵树上父节点不同的点数。现在的问题在于如何判无解。首先如果 A 中一个点不要被操作但它的父节点要被操作,那么一定是无解的。否则,考虑到 A 中一个点的父节点要在它之后被操作,B 中一个点的父节点要在它之前被操作,这样子就有若干个偏序关系,我们只需要拓扑排序...