MLE求助
查看原帖
MLE求助
407007
Stonkin楼主2023/12/14 17:05
#include<bits/stdc++.h>
using namespace std;
const int N=5e5+5;
int n,m;
bool have[N][1005];
int trie[N][30];
int num=0;
char c[110];

void ins(int x)
{
    scanf("%s",c);
    int u=0,v,l=strlen(c);
    for(int i=0;i<l;i++)
    {
        v=c[i]-'a';
        if(!trie[u][v])
            trie[u][v]=++num;
        u=trie[u][v];
    }
    have[u][x]=1;
}

void find()
{
    scanf("%s",c);
    int u=0,v,type=1;
    int l=strlen(c);
    for(int i=0;i<l;i++)
    {
        v=c[i]-'a';
        if(!trie[u][v])
        {
            type=0;
            break;
        }
        u=trie[u][v];
    }
    if(type)
    {
        for(int i=1;i<=n;i++)
        {
            if(have[u][i])
                printf("%d ",i);
        }
    }
    printf("\n");
}

int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        int u;
        scanf("%d",&u);
        for(int j=1;j<=u;j++)
            ins(i);
    }
    scanf("%d",&m);
    for(int i=1;i<=m;i++)
        find();
    return 0;
}
2023/12/14 17:05
加载中...