记录编号 409601 评测结果 AAAAAAAAAA
题目名称 词链 最终得分 100
用户昵称 GravatarHzoi_Hugh 是否通过 通过
代码语言 C++ 运行时间 0.029 s
提交时间 2017-05-28 16:36:00 内存使用 61.33 MiB
显示代码纯文本
#include<cstdio>
#include<cstring>
#define MAXN 500001
using namespace std;
struct Trie
{
   int dfn;
   Trie *ch[30];
}node[MAXN],*root;
int f[MAXN],n,t,sz;
inline int Max(int x,int y)
{
    return x>y?x:y;
}
inline Trie* newnode()
{
    sz++;
    return &node[sz];
}
inline void insert(char *s)
{
    int len=strlen(s);
    Trie *now=root;
    ++t;
    for(int i=0;i<len;i++)
    {
       if(now->ch[s[i]-'a']==NULL)
         now->ch[s[i]-'a']=newnode();
       if(now->dfn)
          f[t]=Max(f[now->dfn],f[t]);
       now=now->ch[s[i]-'a'];
    }
    now->dfn=t;
    f[t]++;
}
int main()
{
    freopen("link.in","r",stdin);
	freopen("link.out","w",stdout);
    scanf("%d",&n);
    root=newnode();
    while(n--)
    {
      char s[60];
      scanf("%s",s);
      insert(s);
    }
    int ans=0;
    for(int i=1;i<=t;i++)ans=Max(f[i],ans);
    printf("%d",ans);
    return 0;
}