每个点都独一无二欧~~
pre——前缀
void build(){
int root = 0;//首字母不存在的话从头开始存啊
for(int i = 0;i < len ;i++){
int cur = s[i] - 'a';
if(!trie[root][cur]) trie[root][cur] = ++cnt;
//从root节点到cur这条边如果不存在的话 建root-cur-?的下一个节点---cnt
pre[trie[root][cur]]++;//又一次到下个节点
root = trie[root][cur];//更新当前的末节点
}
}
int query(){
int root = 0;
for(int i = 0;i < len; i++){
int cur = s[i] - 'a';
if(!trie[root][cur]) return 0;//不存在该前缀
root = trie[root][cur]; //更新到下一个节点
}
return pre[root]; //root--最后边指向节点
}