POJ3630Phone List[字典树]

来源:互联网 发布:网页美工图片 编辑:程序博客网 时间:2024/05/21 10:25

题目大意
给你一些字符串,看有没有有字符串是其它任意一个的前缀

#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;struct node{    int p1,p2;    int c[10];}a[50010];int t,o,i,d,j,flag,n;char s[256];int main(){    scanf("%d",&t);    while(t--){        memset(a,0,sizeof(a));//初始化        o=1;        a[1].p2=1;        flag=1;        scanf("%d",&n);        for(i=1;i<=n;i++){            scanf("%s",s);            d=1;            for(j=0;j<strlen(s);j++){                a[d].p2=1;                if(a[d].c[s[j]-'0']==0)a[d].c[s[j]-'0']=++o;                d=a[d].c[s[j]-'0'];                if(a[d].p1)                    flag=0;            }            if(a[d].p2)                flag=0;            a[d].p1=1;        }        if(flag)puts("YES");        else puts("NO");    }    return 0;}
0 0