P3879样例过了,但是全WA了,用结构体写的
#include <bits/stdc++.h>
using namespace std;
struct st{
int trie[30][26];
int end[3000]={0};
int idx=1;
}N[1001];//几棵字典树
string s;
int n,m,l;
inline void build(int p){
int cnt=1;
for(int i=0;i<s.size();i++){
int k=s[i]-'a';
if(N[p].trie[cnt][k]==0) N[p].trie[cnt][k]=++N[p].idx;
cnt=N[p].trie[cnt][k];
}
N[p].end[cnt]++;
}
inline int query(int p){
int cnt=1;
for(int i=0;i<s.size();i++){
int k=s[i]-'a';
if(N[p].trie[cnt][k]==0) return 0;
cnt=N[p].trie[cnt][k];
}
return N[p].end[cnt];
}
signed main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>l;
for(int j=1;j<=l;j++){
cin>>s;
build(i);
}
}
cin>>m;
for(int i=1;i<=m;i++){
cin>>s;
int ans=0;
for(int j=1;j<=n;j++){
if(query(j)) cout<<j<<' ';
}
cout<<endl;
}
}