stl签到题。写一个从string映射到set的map即可,其中set的作用是存储包含当前string的段落索引。

使用set替换vector是为了去重。

#include<bits/stdc++.h>
using namespace std;
int n, m, t;
string s;
map<string, set<int>> shan;
signed main() {
    cin>>n;
    for(int i=1; i<=n; i++) {
        cin>>t;
        while(t--) {
            cin>>s; shan[s].insert(i);
        }
    }
    cin>>m;
    while(m--) {
        cin>>s; int f=0;
        for(auto &ele: shan[s]) {
            if(f) cout<<' ';
            cout<<ele;
            f=1;
        }
        cout<<'\n';
    }
}
//今天是诗岸的生日,让我们祝她生日快乐!!
//山山是最好的中文虚拟歌手!