HDU 2896 AC自动机 (二)
void deleteAll(node *p){
for (int i = 0 ; i < 128 ; i ++ )
if(p -> next[i] != 0){
deleteAll(p -> next[i]) ;
}
delete p ;
}
char a[11111] ;
int num[1111] ;
int main() {
int n ;
cin >> n ;
getchar() ;
root = new node() ;
for (int i = 1 ; i <= n ;i ++ ){
gets(a) ;
insert(a ,i ) ;
}
int m ;
cin >> m ;
getchar() ;
build() ;
for (int i = 1 ; i <= m ;i ++ ){
gets(a) ;
num[i] = search(a , i) ;
}
int cc = 0 ;
for (int i = 1 ; i <= m ;i ++ ){
if(num[i]){
printf("web %d:",i) ;
for(set::iterator p = anss[i].begin() ; p != anss[i].end() ; ++ p)
cout <<" "<< *p ;
cc ++ ;
puts("") ;
}
}
printf("total: %d\n",cc) ;
deleteAll(root) ;
return 0 ;
}
| 评论 |
|
|