原来如果没找到该单词则输出空行不是多输出一个空行,而是不输出。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
const int N=5e5+10;
int son[N][26],idx;
vector<int> cnt[N];
int n,m;
void _insert(string s,int x)
{
int _length=s.length();
int p=0;
for(int i=0;i<_length;i++)
{
int u=s[i]-'a';
if(!son[p][u]) son[p][u]=++idx;
p=son[p][u];
}
cnt[p].push_back(x);
}
vector<int> _query(string s)
{
vector<int> answer;
int _length=s.length();
int p=0;
for(int i=0;i<_length;i++)
{
int u=s[i]-'a';
if(!son[p][u]) return answer;
p=son[p][u];
}
answer=cnt[p];
return answer;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
int l;cin>>l;
for(int j=1;j<=l;j++)
{
string phrase;cin>>phrase;
_insert(phrase,i);
}
}
cin>>m;
for(int i=1;i<=m;i++)
{
string phrase;cin>>phrase;
vector<int> answer=_query(phrase);
if(answer.size())
{
answer.erase(unique(answer.begin(),answer.end()),answer.end());
for(int i=0;i<answer.size();i++)
{
cout<<answer[i];
if(i<answer.size()-1) cout<<' ';
}
}
cout<<endl;
}
return 0;
}