hdu 1403后缀树裸题

编辑器加载中...#include"stdio.h" #include"string.h" #define maxn 200005 char s1[maxn],s2[maxn]; int wa[maxn],wb[maxn],wv[maxn],ws[maxn]; int rank[maxn],height[maxn]; int sa[maxn]; int cmp(int *r,int a,int b,int l) {return r[a]==r[b]&&r[a+l]==r[b+l];} void da(char *r,int *sa,int n,int m) { int i,j,p,*x=wa,*y=wb,*t; for(i=0;i=0;i--) sa[--ws[x[i]]]=i; for(j=1,p=1;p=j) y[p++]=sa[i]-j; for(i=0;i=0;i--) sa[--ws[wv[i]]]=y[i]; for(t=x,x=y,y=t,p=1,x[sa[0]]=0,i=1;imax&&judge(i,n,sa)) max=height[i]; printf("%d\n",max); } return 0; }
原文地址:https://www.cnblogs.com/chaosheng/p/2535475.html