Pagini recente » Cod sursa (job #533978) | Cod sursa (job #1432079) | Cod sursa (job #371198) | Cod sursa (job #176692) | Cod sursa (job #1492578)
#include <cstdio>
#define cMax 10000001
#define cuvMax 22
#include <string.h>
#define CH *s-'a'
using namespace std;
char line[cMax], cuv[cuvMax];
int i, m;
long long sol;
struct Trie
{
int cnt;
Trie *fii[3];
Trie()
{
cnt=0;
memset(fii, 0, sizeof(fii));
}
};
Trie *T=new Trie;
void ins(Trie *node, char *s)
{
if(*s=='\n')
{
node->cnt=1;
return;
}
if(node->fii[CH]==0)
node->fii[CH]=new Trie;
ins(node->fii[CH], s+1);
}
void que(Trie *node, char *s)
{
sol+=node->cnt;
if(*s=='\n')
return;
if(node->fii[CH])
que(node->fii[CH], s+1);
}
int main()
{
freopen("abc2.in", "r", stdin);
freopen("abc2.out", "w", stdout);
fgets(line, cMax, stdin);
fgets(cuv, cuvMax, stdin);
while(!feof(stdin))
{
ins(T, cuv);
fgets(cuv, cuvMax, stdin);
}
m=strlen(line);
for(i=0;i<m;i++)
que(T, line+i);
printf("%d", sol);
return 0;
}