Trie树10号点WA,求助
查看原帖
Trie树10号点WA,求助
352603
RainSpark楼主2022/7/5 10:37
#include<iostream>
#include<cstdio>
#define N 500005
using namespace std;
int son[N][30],idx;
bool b[N][105];
int n,m;
char str[N];
void insert(int x){
    int p=0;
    for(int i=0;str[i];i++){
        int u=str[i]-'a';
        if(!son[p][u]){
             son[p][u]=++idx;
        }
        p=son[p][u];
    }
    b[p][x]=1;
}
void query(){
    int p=0;
    bool f=1;
    for(int i=0;str[i];i++){
        int u=str[i]-'a';
        if(!son[p][u]){
            f=0;
            break;
        }
        p=son[p][u];
    }
    if(f){
        for(int i=1;i<=n;i++){
            if(b[p][i]){
                printf("%d ",i);
            }
        }
    }
    puts("");
}

int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        int x;
        scanf("%d",&x);
        for(int j=1;j<=x;j++){
            scanf("%s",&str);
            insert(i);
        }
    }
    scanf("%d",&m);
    for(int i=1;i<=m;i++){
        scanf("%s",&str);
        query();
    }
    return 0;
}
2022/7/5 10:37
加载中...