#include<string>#include<iostream>usingnamespace std;struct node {
node* nxt[26];int flag;node(){for(int i =0; i <26; i++) nxt[i]=nullptr;}};
node* root;voidinit(){
root =newnode();}voidins(string s){int n = s.size();
node* now = root;for(int i =0; i < n; i++){int to = s[i]-'a';if(now->nxt[to]==nullptr) now->nxt[to]=newnode();
now = now->nxt[to];}
now->flag ++;}intfid(string t){int n = t.size();
node* now = root;for(int i =0; i < n; i++){int to = t[i]-'a';if(now->nxt[to]==nullptr)return-1;
now = now->nxt[to];}return now->flag;}
//做题///#include<string>usingnamespace std;voidtrie(){int nxt[100000][26], cnt;bool exist[100000];//voidinsert(string s){int n = s.size();int p =0;for(int i =0; i < n; i++){int c = s[i]-'a';if(!nxt[p][c]) nxt[p][c]=++cnt;
p = nxt[p][c];}
exist[p]=1;}boolfind(string t){int p =0;int n = t.size();for(int i =0; i < n; i++){int c = t[i]-'a';if(!nxt[p][c])returnfalse;;
p = nxt[p][c];}return exist[p];}}