Trie

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=20005;
int tot,n,ans;
char s[55];
struct Node{
	int pos,val;
}trie[N][30];
void insert(char *s,int rt){
	int Max=0,x;
    for(int i=0;s[i];i++){
        x=s[i]-'a';
        if(trie[rt][x].pos==0){
            trie[rt][x].pos=++tot;
        }
        rt=trie[rt][x].pos;
		Max=max(Max,trie[rt][x].val);
    }
	trie[rt][x].val=Max+1;
	ans=max(ans,Max+1);
}
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        cin>>s;
        insert(s,1);
    }
	printf("%d\n",ans);
    return 0;
}
posted @ 2019-07-16 13:32  prestige  阅读(124)  评论(0)    收藏  举报