记录编号 415662 评测结果 AAAAAAAAAA
题目名称 词链 最终得分 100
用户昵称 GravatarHallmeow 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2017-06-18 16:27:35 内存使用 0.00 MiB
显示代码纯文本
#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#define pos(i,a,b) for(int i=(a);i<=(b);i++)
#define pos2(i,a,b) for(int i=(a);i>=(b);i--)
#define N 500001
using namespace std;
struct Trie
{
       int dfn;
       Trie *ch[30];
};
Trie node[N],*root;
int f[N],n,t,sz;
Trie* newnode()
{
      sz++;
      return &node[sz];
}
void insert(char *s)
{
     int len=strlen(s);
     Trie *now=root;
     ++t;
     pos(i,0,len-1)
     {
        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 haha()
{
    freopen("link.in","r",stdin);
    freopen("link.out","w",stdout);
    scanf("%d",&n);
    root=newnode();
    pos(i,1,n)
    {
       char s[60];
       scanf("%s",s);
       insert(s);
    }
    int ans=0;
    pos(i,1,t)
      ans=max(ans,f[i]);
    printf("%d",ans);
    //while(1);
    return 0;
}
int sb=haha();
int main()
{
 ;   
}