1 条题解

  • 3
    @ 2021-8-7 21:01:06

    C++ :

    #include <iostream>
    #include <string>
    #include <cstring>
     
    using namespace std;
     
    const int maxn=1e5+5;
     
    int son[maxn][10],idx;
    bool vis[maxn];
     
    bool insert(string s)
    {
        bool HasSubstr=false,isNew=false;
        int p=0;
        for(int i=0;i<s.size();i++){
            int x=s[i]-'0';
            if(!son[p][x]){
                isNew=true;
                son[p][x]=++idx;
            }
            p=son[p][x];
            if(vis[p]) HasSubstr=true;
        }
        vis[p]=true;
        return !HasSubstr&&isNew;
    }
     
    int main()
    {
        int t;
        cin>>t;
        while(t--){
            int n;
            cin>>n;
            memset(son,0,sizeof son);
            memset(vis,false,sizeof vis);
            bool flag=true;
            idx=0;
            while(n--){
                string s;
                cin>>s;
                if(!insert(s)) flag=false;
            }
            if(flag) cout<<"YES"<<endl;
            else cout<<"NO"<<endl;
        }
        return 0;
    }
    
    • 1

    信息

    ID
    72
    时间
    1000ms
    内存
    128MiB
    难度
    6
    标签
    递交数
    223
    已通过
    64
    上传者