遍历每篇短文,对每个单词,将当前短文编号加入其对应的列表(注意去重)。

#include <iostream>
#include<unordered_map>
#include<vector>
#include<string>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n;
    cin>>n;
    unordered_map<string,vector<int>>words;
    for(int id=1;id<=n;id++){
        int l;
        cin>>l;
        for(int i=0;i<l;i++){
            string word;
            cin>>word;
            auto&v=words[word];
            if(v.empty()||v.back()!=id)v.push_back(id);
        }
    }
    int m;
    cin>>m;
    while(m--){
        string w;
        cin>>w;
        auto it=words.find(w);
        if(it==words.end()){
            cout<<'\n';
            continue;
        }
        const auto&v=it->second;
        for(size_t i=0;i<v.size();i++){
            if(i)cout<<' ';
            cout<<v[i];
        }
        cout<<endl;
    }
    return 0;
}