就是很普通的一个trie树,但是其中有一个新的知识点,所以记一下 其中son[][]表示trie树,p是移动时用到的点


using namespace std;

const int N=100010;
int son[N][26]; 
int idx,p,cnt[N]; 

void add(char *str)
{
	int p=0;//加入一个新的单词时从根节点出发
	for(int i=0;str[i];i++)
	{
		int u=str[i]-'A';
		if(!son[p][u])//如果这个字母没有出现过,就要让它计入
		{
			son[p][u]=++idx;
			p=son[p][u];
		}
		else
		{
			p=son[p][u];
		}
	}
	cnt[p]++;//这个可以没有,是用来统计单词数的
}

int main()
{
	char a[63];
	while(scanf("%s",a)!=EOF)//这种情况下输入“Ctrl+z”就会退出
	{
		add(a);
	}
	cout<<idx+1;
	return 0;
}