题目
两种方式都可以求出一个字符串不同子串的个数。
1.fail树中每一类串的个数为:d[i].len-d[d[i].fa].len; 每类不相交
2.在SAM上dfs sz[u]=sigma(sz[v])+1;
#include<bits/stdc++.h>
#define m(a,b) memset(a,b,sizeof a)
using namespace std;
typedef long long ll;
const int N=1e5+5;
struct node{
int len,fa,ch[26];
node(){
len=fa=0,m(ch,0);}
}d[N<<1];
char s[N];ll dp[N<<<