why RE
查看原帖
why RE
1345652
Luliuyan114514楼主2024/8/9 20:32
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
struct node{
    vector<int> id;
    int son[30];
    bool isend;
}t[100005];
int cnt=1,id=1;
void insert(string s)
{
    int now=0;
    for(int i=0;i<s.size();++i)
    {
        if(t[now].son[s[i]-'a']==0)
        {
            t[now].son[s[i]-'a']=cnt++;
        }
        now=t[now].son[s[i]-'a'];
        if(i==s.size()-1)
        {
            t[now].isend=1;
            if(t[now].id.size()==0||t[now].id[t[now].id.size()-1]!=id)
            {
                t[now].id.push_back(id);
            }
        }
    }
}
void find(string s)
{
    int now=0;
    for(int i=0;i<s.size();++i)
    {
        if(t[now].son[s[i]-'a']==0)
        {
            cout<<endl;
            return;
        }
        now=t[now].son[s[i]-'a'];
    }
    if(t[now].isend==0)
    {
        cout<<endl;
        return;
    }
    for(int i=0;i<(t[now].id).size();++i)
    {
        cout<<t[now].id[i];
        if(i!=(t[now].id).size()-1)
        {
            cout<<' ';
        }
    }
    cout<<endl;
}
int main()
{
    int n,m;
    cin>>n;
    for(int i=1;i<=n;++i)
    {
        int l;
        cin>>l;
        while(l--)
        {
            string t;
            cin>>t;
            insert(t);
        }
        id++;
    }
    cin>>m;
    while(m--)
    {
        string t;
        cin>>t;
        find(t);
    }
    return 0;
}
2024/8/9 20:32
加载中...