直接抄大白书模板
不解释了,大白书说的比我好
///字母表为全体小写字母的 Trie
struct Trie
{
int ch[maxnode][sigma_size];
int val[maxnode];
int sz; ///节点总数
Trie() { sz = 1; memset(ch[0],0,sizeof(ch[0])); } ///初始时只有一个根节点
int idx (char c) { return c - 'a'; } ///字符c的编号
///插入字符串 s, 附加信息为 v。 注意 v 必须非0,因为 0 代表“本节点不是单词节点”
void insert_word(char *s,int v){
int u = 0, n = strlen(s);
for(int i=0; i<n; i++){
int c = idx(s[i]);
if(!ch[u][c]) {
memset(ch[sz],0,sizeof(ch[sz]));
val[sz] = 0;
ch[u][c] = sz++;
}
u = ch[u][c];
}
val[u] = v;
}
};