Pagini recente » Cod sursa (job #3126162) | Cod sursa (job #2166588) | Cod sursa (job #2559622) | Cod sursa (job #2253204) | Cod sursa (job #2675970)
#include <bits/stdc++.h>
using namespace std;
ifstream in("trie.in");
ofstream out("trie.out");
struct trie
{
int num,nrcuv;
vector<int> v;
trie()
{
num=0;
cuv=0;
}
};
vector<trie> arb;
int cod;
string s;
void add()
{
int nod=0;
for(int i=0;i<s.size();i++)
{
if(arb[nod].v[s[i]-'a']==0)
{
arb.push_back(trie());
arb[nod].v[s[i]-'a']=arb.size()-1;
}
nod=arb[nod].v[s[i]-'a'];
arb[nod].num++;
}
arb[nod].nrcuv++;
}
void Delete()
{
int nod=0;
for(int i=0;i<s.size();i++)
{
nod=arb[nod].v[s[i]-'a'];
arb[nod].num--;
}
arb[nod].nrcuv--;
}
void count()
{
int nod=0;
for(int i=0;i<s.size();i++)
{
nod=arb[nod].v[s[i]-'a'];
}
return arb[nod].nrcuv;
}
int main()
{
arb.push_back(f());
while(in>>cod>>s)
{
if(cod==0) add();
else if(cod==1) Delete();
else if(cod==2) out<<count()<<"\n";
else out<<lcp()<<"\n";
}
return 0;
}