pku 1056 IMMEDIATE DECODABILITY
#include <stdio.h>
#include <string.h>
#define MAXTSIZE 100000
#define MAXLEN 11
typedef struct TNode
{
    TNode()
    {
        end=false;
        memset(next,0,sizeof(next));
    }
    bool end;
    TNode *next[2];
}*Trie;
TNode node[MAXTSIZE];
int index;
bool insert(Trie T,char *str)
{
    while(*str)
    {
        if( T->end == true ) return false;
        int i=*str-'0';
        if(!T->next[i]) T->next[i]=node+index++;
        T=T->next[i];
        str++;
    }
        if(T->next[0] || T->next[1]) return false;
    T->end=true;
    return true;
}
int main()
{
    int n,cas=1;
    char code[MAXLEN];
    while(scanf("%s",code)!=EOF)
    {
        index=0;
        Trie tree=node+index++;
        bool ok=true;
        do
        {
            if(ok)
            {
                ok=insert(tree,code);
            }
            scanf("%s",code);
        }while(code[0]!='9');
        if(ok) printf("Set %d is immediately decodable\n",cas++);
        else printf("Set %d is not immediately decodable\n",cas++);
        for(n=0; n<=index; n++)
        {
            node[n].end=false;
            memset(node[n].next,0,sizeof(node[n].next));
        }
    }
    return 0;
}
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号