我是标题党。
但是我样例 AC 本地都过但是 tm 全 WA 了,锰锌刚学 Trie,帮助者赏 3 关注!
#include <bits/stdc++.h>
using namespace std;
#define rint register int
int t,n,m,l,trie[2005][5005][27],sum;
bitset<1005>tmp[300005];
inline void add(int id,string s){
int root=0;
for (rint i=0;i<(int)s.length();i++){
if (!trie[id][root][s[i]-'a']) trie[id][root][s[i]-'a']=++sum;
root=trie[id][root][s[i]-'a'],tmp[id][root]=1;
}
}
inline bool query(int id,string s){
int root=0;
for (rint i=0;i<(int)s.length();i++){
if (tmp[id][trie[id][root][s[i]-'a']]==0) return 0;
root=trie[id][root][s[i]-'a'];
}
return tmp[id][root];
}
int main(){
cin>>n;
for (rint i=1;i<=n;i++){
cin>>l;
sum=0;
for (rint j=1;j<=l;j++){
string s;
cin>>s,add(i,s);
}
}
cin>>m;
for (rint i=1;i<=m;i++){
string s;
cin>>s;
bool b=0;
for (rint j=1;j<=n;j++) if (query(j,s)>=1) cout<<j<<' ',b=1;
b?cout<<"\b\n":cout<<"\n";
}
return 0;
}