下厨房
题目描述:
牛牛想尝试一些新的料理,每个料理需要一些不同的材料,问完成所有的料理需要准备多少种不同的材料。
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int cnt=0;
const int maxn =2e6+5;//如果是64MB可以开到2e6+5,尽量开大
int tree[maxn][30];//tree[i][j]表示节点i的第j个儿子的节点编号
bool flagg[maxn];//表示以该节点结尾是一个单词
int tot;//总节点数
void insert_(char *str)
{
int len=strlen(str);
int root=0;
for(int i=0;i<len;i++)
{
int id=str[i]-'0';
if(!tree[root][id])
tree[root][id]=++tot;
root=tree[root][id];
}
if(flagg[root]) cnt++;
flagg[root]=true;
}
int main()
{
char str[100];
int T=0;
while(~scanf("%s",str))
{
insert_(str);
T++;
}
cout<<T-cnt<<endl;
return 0;
}