警钟撅爆
查看原帖
警钟撅爆
1036832
qiucr楼主2024/5/9 18:30

在查询时一定一定要判断有没有这个单词 少了第21行的就全WA

#include<bits/stdc++.h>
using namespace std;
const int N = 500005;
int tr[N][30],idx;
int b[N];
vector<int> res[N];
int n,m;
void insert(string s,int x){
    int p=0;
    for(int i=0;i<s.size();i++){
        int u=s[i]-'a';
        if(!tr[p][u]) tr[p][u]=++idx;
        p=tr[p][u];
    }
    res[p].push_back(x);
}
void query(string s){
    int p=0;
    for(int i=0;i<s.size();i++){
        int u=s[i]-'a';
        if(!tr[p][u]){
            cout<<" "<<endl;
            return;
        }
        p=tr[p][u];
    }
    int top=0;
    for(int i=0;i<res[p].size();i++){
        b[++top]=res[p][i];
    }
    sort(b+1,b+1+top);
    for(int i=1;i<=top;i++){
        if(b[i]!=b[i-1]) cout<<b[i]<<" ";
    }
    cout<<endl;
    return;
}
signed main(){
    freopen("txt.out","r",stdin);
    freopen("t1.out","w",stdout);
    ios::sync_with_stdio(false);
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>m;
        for(int j=1;j<=m;j++){
            string s;
            cin>>s;
            insert(s,i);
        }
    }
    cin>>m;
    while(m--){
        string s;
        cin>>s;
        query(s);
    }
    return 0;
}
2024/5/9 18:30
加载中...