https://cn.vjudge.net/problem/SPOJ-LCS2
A string is finite sequence of characters over a non-empty finite set Σ.
In this problem, Σ is the set of lowercase letters.
Substring, also called factor, is a consecutive sequence of characters occurrences at least once in a string.
Now your task is a bit harder, for some given strings, find the length of the longest common substring of them.
Here common substring means a substring of two or more strings.
Input
The input contains at most 10 lines, each line consists of no more than 100000 lowercase letters, representing a string.
Output
The length of the longest common substring. If such string doesn't exist, print "0" instead.
Example
Input: alsdfkjfjkdsal fdjskalajfkdsla aaaajfaaaa Output: 2
Notice: new testcases added
这道题可以类比两个的情况来做。
与之不同的是我们需要对第一个串建立后缀自动机。然后对于之后的每个串在自动机上匹配,记录下来每个串到达每个状态(节点)匹配的长度,针对每次状态取最小值,然后从最小值中选取最大值即为答案。
有一点需要注意的是匹配的时候并不是每一个是子串的位置都能匹配到,所以我们需要按照拓扑序进行进一步的更新。对于一个状态如果我们匹配到了,那么他fa的状态(link)一定是可以匹配到的,dp[link[e]]=max(dp[link[e]],min(dp[e],len[l