记录编号 38826 评测结果 AAAAATTTTT
题目名称 单词默写 最终得分 50
用户昵称 GravatarCzb。 是否通过 未通过
代码语言 C++ 运行时间 5.006 s
提交时间 2012-06-14 22:03:05 内存使用 0.31 MiB
显示代码纯文本
#include<stdio.h>
#include<string.h>
 
struct Node
{
    Node *Next[26];
    int k;Node();
};
 
int n,m,k,l,ans;
 
char s[11];
 
Node :: Node()
{
    k=-1;
    for(int i=0;i<26;i++)
    {
        Next[i]=NULL;
    }
}
 
void dfs(Node *p)
{
    if(p->k>=k)ans++;
    for(int i=0;i<26;i++)
    {
        if(p->Next[i]!=NULL)
        {
            dfs(p->Next[i]);
        }
    }
}
 
int main()
{
    freopen("engzam.in","r",stdin);
    freopen("engzam.out","w",stdout);
    int i,j;Node *Root=new Node;
    scanf("%d%d\n",&n,&m);
    for(i=1;i<=n;i++)
    {
        scanf("%s %d\n",s,&k);
        l=strlen(s);
        Node *p=new Node;
        p=Root;
        for(j=0;j<l;j++)
        {
            if(p->Next[s[j]-'a']==NULL)
            {
                Node *q=new Node;
                p->Next[s[j]-'a']=q;
                q=NULL;
                delete q;
            }
            p=p->Next[s[j]-'a'];
        }
        p->k=k;
        p=NULL;
        delete p;
    }
    for(i=1;i<=m;i++)
    {
        scanf("%s %d\n",s,&k);
        ans=0;
        l=strlen(s);
        Node *p=new Node;
        p=Root;
        for(j=0;j<l;j++)
        {
            if(p->Next[s[j]-'a']==NULL)
            {
                goto l1;
            }
            p=p->Next[s[j]-'a'];
        }
        dfs(p);
        l1:printf("%d\n",ans);
    }
    return 0;
}