记录编号 267403 评测结果 AAAAAAAAAA
题目名称 [郑州101中学] 月考 最终得分 100
用户昵称 Gravatar核糖核酸 是否通过 通过
代码语言 C++ 运行时间 0.095 s
提交时间 2016-06-11 08:51:25 内存使用 122.38 MiB
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std;
struct Node{
    int c[30];
    int v;
    bool end;
};
static Node s[1000000];
char t[205];
int Root, N, M, Index, p, x, ans;

int main()
{
    freopen("mtest.in","r",stdin);
    freopen("mtest.out","w",stdout);
    scanf("%d", &N);
    Index = 0;
    Root = 0;
    while(N--)
    {
        scanf("%s", t);
        int sz = strlen(t);
        p = Root;
        for(int i=0; i<sz; i++)
        {
            x = t[i] - 96;
            if(s[p].c[x] == 0)
            {
                s[p].c[x] = ++Index;
                s[Index].v = x;
                s[Index].end = false;
            }
            p = s[p].c[x];
        }
        s[p].end = true;
    }
    scanf("%d", &M);
    while(M--)
    {
        scanf("%s", t);
        int sz = strlen(t);
        p = Root;
        for(int i=0; i<sz; i++)
        {
            x = t[i] - 96;
            if(s[p].c[x] == 0) break;
            p = s[p].c[x];
            if(i==(sz-1) && s[p].end) ans++;
        }
    }
    printf("%d\n", ans);
    fclose(stdin); fclose(stdout);
    return 0;
}