Cod sursa(job #2082046)

Utilizator MarinPeptenaruMarin Vasile Peptenaru MarinPeptenaru Data 5 decembrie 2017 17:21:21
Problema Trie Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>
#define val(x) x-'A';
using namespace std;
ifstream in("dictree.in");
ofstream out("dictree.out");
struct trie
{
    bool ultim;
    bitset < 60 > ok;
    trie *fii[60];
} *radacina;
long long nr_nod=1,n;
char s[25002];
void initializeaza ()
{
    radacina=new trie;
    radacina->ok.reset();
    radacina->ultim=false;
}
void insereaza (char s[])
{
    int x=strlen(s);
    trie *nod_curent=radacina;
    for(int i=0; i<x; i++)
    {
        int litera=val(s[i]);
        if(nod_curent->ok.test(litera)==false)
        {
            nr_nod++;
            nod_curent->ok.set(litera);
            nod_curent->fii[litera]=new trie;
        }
        nod_curent=nod_curent->fii[litera];
    }
}
int main()
{
    initializeaza();
    in>>n;
    in.get();
    for(int i=1; i<=n; i++)
    {
        in.getline(s,25002);
        insereaza(s);
    }
    out<<nr_nod;
    return 0;
}