码迷,mamicode.com
首页 > 其他好文 > 详细

trie树

时间:2020-01-28 00:09:44      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:efi   com   include   int   mes   bsp   void   printf   --   

题:http://hihocoder.com/problemset/problem/1014

技术图片
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
typedef long long ll;
const int M=1e6+5;
int g[M][30],sz[M];
char s[M];
void dfs(int u){
    for(int i=0;i<26;i++)
        if(g[u][i]){
            dfs(g[u][i]);
            sz[u]+=sz[g[u][i]];
        }
}
int main(){
    int n;
    scanf("%d",&n);
    int tot=1;
    for(int i=1;i<=n;i++){
        scanf("%s",s);
        int len=strlen(s);
        int fir=1;
        for(int j=0;j<len;j++){
            if(!g[fir][s[j]-a])
                g[fir][s[j]-a]=++tot;
            fir=g[fir][s[j]-a];        
        }
        sz[fir]++;
    }
    dfs(1);
    int m;
    scanf("%d",&m);
    while(m--){
        scanf("%s",&s);
        int fir=1;
        int len=strlen(s);
        int ans=0;
        for(int j=0;j<len;j++){
            if(!g[fir][s[j]-a]){
                ans=0;
                break;
            }    
            fir=g[fir][s[j]-a];
            ans=sz[fir];
        }
        
        printf("%d\n",ans);
    }
    return 0;
}
View Code

 

trie树

标签:efi   com   include   int   mes   bsp   void   printf   --   

原文地址:https://www.cnblogs.com/starve/p/12237165.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!