#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<set>
#include<map>
#include<queue>
#include<vector>
#include<stack>
using namespace std;
#define ll long long
#define mxn 502000
#define eps 1e-8
int son[mxn][27], sz = 1;
int val[mxn];
char s[103];
void insert() {
int n = strlen( s );
int t = 0;
for( int i = 0; i < n; ++i ) {
int c = s[i] - 'a';
if( son[t][c] == 0 ) {
son[t][c] = sz;
memset( son[sz], 0, sizeof( son[sz] ) );
val[sz++] = 0;
}
t = son[t][c];
val[t]++;
}
}
int find() {
int n = strlen( s );
int t = 0;
for( int i = 0; i < n; ++i ) {
int c = s[i] - 'a';
if( son[t][c] == 0 )
return 0;
t = son[t][c];
}
return val[t];
}
int main() {
while( gets( s ) && strlen( s ) )
insert();
while( gets( s ) )
printf( "%d\n", find() );
return 0;
}
HDU1251 trie(数组)
最新推荐文章于 2023-03-13 09:33:49 发布