Pagini recente » Cod sursa (job #2354079) | Cod sursa (job #1337502) | Cod sursa (job #1784056) | Cod sursa (job #2018357) | Cod sursa (job #2690180)
#include <bits/stdc++.h>
using namespace std;
ifstream ci("trie.in");
ofstream cou("trie.out");
struct nod{
int x;
int ap;
nod *urm[26];
};
nod *a;//radacina
string s;
int c;
void init(){
a=new nod;
a->x=0;
a->ap=0;
for(int j=1;j<=26;j++){
a->urm[j]=NULL;
}
}
void c0(){
int r,h=s.length()-1;
nod *p=a;
nod *q;
//cout<<"k \n";
for(int i=0;i<=h;i++){
r=s[i]-'a'+1;
if(p->urm[r]!=NULL){
p=p->urm[r];
(p->x)++;
}else{
q=new nod;
q->ap=0;
q->x=1;
for(int j=1;j<=26;j++){
q->urm[j]=NULL;
}
p->urm[r]=q;
p=q;
}
}
(p->ap)++;
(p->x)++;
}
void c1(){
int r,p=s.length()-1;
nod *cap=a;
for(int i=0;i<=p;i++){
char t=s[i];
r=t-'a'+1;
cap=cap->urm[r];
(cap->x)--;
}
(cap->ap)--;
(cap->x)--;
}
void c2(){
int r,p=s.length();
nod *cap=a;
for(int i=0;i<=p-1;i++){
char t=s[i];
r=t-'a'+1;
if(cap->urm[r]==NULL){
cou<<"0 \n";
return;
}
cap=cap->urm[r];
}
cou<<cap->ap<<"\n";
}
void c3(){
int r,p=s.length();
nod *cap=a;
int lng=0;
for(int i=0;i<=p-1;i++){
char t=s[i];
r=t-'a'+1;
if(cap->urm[r]==0){
cou<<lng<<"\n";
return;
}
lng++;
cap=cap->urm[r];
if(cap->x==0){
cou<<lng-1<<"\n";
return;
}
}
cou<<lng<<"\n";
}
void citire(){
while(ci>>c){
ci>>s;
//cout<<c<<" "<<s<<"\n";
if(c==0){
c0();
}
if(c==1){
//c1();
}
if(c==2){
//c2();
}
if(c==3){
//c3();
}
}
}
int main()
{
init();
citire();
return 0;
}