Trie模板

来源:互联网 发布:北京积分落户 知乎 编辑:程序博客网 时间:2024/06/06 00:09
#include<cstdio>#include<cstring>const int maxnode=210,sigma_size=26;struct Trie{int ch[maxnode][sigma_size];int val[maxnode];int sz;trie(){sz=1;memset(ch[0],-1,sizeof(ch[0]));}int idx(char c){return c-'A';}void insert(char *s,int v){int n=strlen(s),u=0;for(int i=0;i<n;i++){int c=idx(s[i]);if(ch[u][c]==-1){memset(ch[sz],-1,sizeof(ch[sz]));val[sz]=0;ch[u][c]=sz++;}u=ch[u][c];}val[u]=v;}int find(char *s){int n=strlen(s),u=0;for(int i=0;i<n;i++){int c=idx(s[i]);if(ch[u][c]==-1)return 0;u=ch[u][c];}return val[u];}}trie;int main(){char s[maxnode];while(scanf("%s",s)==1&&s[0]!='.')trie.insert(s,1);while(scanf("%s",s)==1&&s[0]!='.')printf("%d\n",trie.find(s));return 0;}