输出格式好像不对,求调
查看原帖
输出格式好像不对,求调
636977
CC__DIAMOND楼主2024/4/16 13:21
#include <bits/stdc++.h>

#define BAR cout<<"*******\n";
#define fst first
#define snd second
#define INFILE(x) freopen(x,"r",stdin)
#define OUTFILE(x) freopen(x,"w",stdout)
#define INF 0x3f3f3f3f
#define INFL 0x3f3f3f3f3f3f3f3f
using namespace std;
using ll = long long;
using ul = unsigned long long;
using ui = unsigned int;
using db = double;
using pii = pair<int, int>;
using pil = pair<int, ll>;
using pll = pair<ll, ll>;
const int max_size = 5e5 + 10;

struct trie {
    int nodes[max_size][26],t=0;
    set<int> end[max_size];

    void insert(const string &s,int k) {
        int p=0;
        for(char c: s){
            int i=c-'a';
            if(!nodes[p][i])nodes[p][i]=++t;
            p=nodes[p][i];
        }
        end[p].insert(k);
    }
    set<int>* query(const string &s){
        int p=0;
        for(char c: s){
            int i=c-'a';
            p=nodes[p][i];
            if(!p) return nullptr;
        }
        return &end[p];
    }
} trie1;

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n,m;
    cin>>n;
    for(int i=1;i<=n;++i){
        int q;
        cin>>q;
        for(int j=1;j<=q;++j){
            string s;
            cin>>s;
            trie1.insert(s,i);
        }
    }
    cin>>m;
    for(int i=1;i<=m;++i){
        string s;
        cin>>s;
        set<int> *set1=trie1.query(s);
        if(set1 == nullptr){
            cout<<'\n';
            continue;
        }
        int q=1;
        for(int j:*set1){
            if(q^set1->size()){
                cout<<j<<' ';
            }else cout<<j<<'\n';
            ++q;
        }
    }
    return 0;
}
2024/4/16 13:21
加载中...