大佬的字典树模板
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
using namespace std;
class trie
{
private:
int trie[400040][27], sum[400040];
int len, root, tot;
public:
trie();
void insert(string st);
int search(string st);
};
trie::trie()
{
memset(trie, 0, sizeof trie);
memset(sum, 0, sizeof sum);
tot = 0;
}
void trie::insert(string st)
{
len = (int)st.length();
root = 0;
for(int i = 0; i < len; ++ i)
{
int id = st[i] - 'a';
if(!trie[root][id])
trie[root][id] = ++ tot;
sum[trie[root][id]] ++;
root = trie[root][id];
}
}
int trie::search(string st)
{
root = 0;
len = (int)st.length();
for(int i = 0; i < len; ++ i)
{
int id = st[i] - 'a';
if(!trie[root][id])
return 0;
root = trie[root][id];
}
return sum[root];
}
string s;
bool read()
int main()
{
return 0;
}