MLE 10
#include<bits/stdc++.h>
using namespace std;
#define LL long long
const int N = 1e5*5+1;
int n, m, tot, Len;
int trie[N][26];
bool word[N][1001];
string str;
void insert(string str, int id){
int len = str.size();
int u = 0, res = 0;
for (int i = 0;i < len;i++){
int a = str[i] - 'a';
if (trie[u][a] == 0){
trie[u][a] = ++tot;
}
u = trie[u][a];
}
word[u][id] = 1;
}
void find(string str){
int len = str.size();
int u = 0;
for (int i = 0;i < len;i++){
int a = str[i] - 'a';
if (trie[u][a] == 0){
printf("\n");
return;
}
u = trie[u][a];
}
for (int i = 1;i <= n;i++){
if (word[u][i]){
printf("%d ", i);
}
}
printf("\n");
}
int main(){
scanf("%d", &n);
for (int i = 1;i <= n;i++){
scanf("%d", &Len);
for (int j = 1;j <= Len;j++){
cin >> str;
insert(str, i);
}
}
scanf("%d", &m);
for (int i = 1;i <= m;i++){
cin >> str;
find(str);
}
return 0;
}
如果word开成[N][501]就是WA 90,除了#11全对