字典树板子

#include <iostream>
using namespace std;
struct node{
	int zi[27];
}tire[maxn];
int isok[maxn]; 
void insert(string s,int id){
	int now=0;//当前在根节点 
	for(int i=0;i<s.length();i++)
	{
		int ch=s[i]-'a'+1;
		if(!tire[now].zi[ch])//没有向下延伸的节点 
			tire[now].zi[ch]=++tot;//创造一个节点,并把它编号为tot 
		now=tire[now].zi[ch];//去下一个节点 
	}
	isok[now]=id;//这个节点是一个字串 
}
bool ask(string s){
	int now=0;
	for(int i=0;i<s.length();i++)
	{
		int ch=s[i]-'a'+1;
		if(!tire[now].zi[ch])	return false;
		now=tire[now].zi[ch];
	}
	return isok[now];
}
原文地址:https://www.cnblogs.com/iss-ue/p/12679622.html