样例没问题,一交就WA。
#include<bits/stdc++.h>
using namespace std;
#define N 500010
int n,m,cnt,t,tree[N][30],f[N][110];
void insert(string str,int a)
{
int len=str.size();
int u=1;
for(int i=0;i<len;i++)
{
int c=str[i]-'a';
if(!tree[u][c]) tree[u][c]=++cnt;
u=tree[u][c];
}
f[u][a]=1;
return;
}
void find(string str)
{
int len=str.size();
int u=1;
for(int i=0;i<len;i++)
{
int c=str[i]-'a';
if(!tree[u][c]){cout<<endl;return;}
u=tree[u][c];
}
for(int i=1;i<=t;i++)
if(f[u][i]==1) cout<<i<<" ";
cout<<endl;
return;
}
int main()
{
string str;
cin>>t;
for(int k=1;k<=t;k++)
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>str;
insert(str,k);
}
}
cin>>m;
for(int i=1;i<=m;i++)
{
cin>>str;
find(str);
}
return 0;
}