对下列文字进行扩写:根据题意我们知道我们要构造一个最短的母串 $S$ 。做法就是先把所有字符串加入 $Trie$ 树在每个子串的末尾打上一个标记表示这个节点被哪些结点经过然后跑一遍 $AC$ 自动机构建 $fail$ 指针 $fail$ 树。对于一个结点 $x$ 它需要从它 $fail$ 树上的父亲那里转移标记这样就可以找出到达某个结点时所出现的新字符串。接下来我们用 $BFS$ 来寻找最短母串。
根据题目要求,我们需要构造一个最短的母串 $S$。具体的做法是首先将所有的子串加入到一个 Trie 树中,并在每个子串的末尾打上一个标记,表示这个节点被哪些结点经过。然后我们运用 AC 自动机的算法来构建 fail 指针(fail 树)。对于一个结点 $x$,它需要从它 fail 树上的父节点那里转移标记,这样就可以找出到达某个结点时所出现的新字符串。接下来我们使用 BFS 算法来寻找最短的母串。
我们用 vis[u][state] 表示是否在匹配状态为 state 时经过结点 u。当我们找到一个结点满足它的状态等于最终状态时,输出它走过的路径长度,即为答案。
原文地址: http://www.cveoy.top/t/topic/iOef 著作权归作者所有。请勿转载和采集!