1 solutions

  • 0
    @ 2025-11-5 17:30:12

    C++ :

    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<set>
    #include<iostream>
    #include<queue>
    #include<vector>
    #include<cmath>
    #include<stack>
    #include<iterator>
    #include<algorithm>
    using namespace std;
    set<int> s[1000],ans,ans1,ans2;
    queue<int> q;
    int main()
    {
        int i,n,m,j,t,w;
        set<int>::iterator it;
        for(i=0;i<1000;i++)
            s[i].clear();
        scanf("%d%d",&m,&n);
        for(i=1;i<=m;i++)
        {
            scanf("%d",&t);
            for(j=0;j<t;j++)
            {
                scanf("%d",&w);
                s[i].insert(w);
            }
        }
        for(i=0;i<n;i++)
        {
            while(!q.empty())
                q.pop();
            ans.clear();
            ans1.clear();
            ans2.clear();
            scanf("%d",&t);
            ans1=s[t];
            ans2=ans1;
            while(1)
            {
                scanf("%d",&w);
                if(w==0)
                    break;
                set_intersection(ans1.begin(),ans1.end(),s[w].begin(),s[w].end(),insert_iterator<set<int> >(ans,ans.begin()));
                ans1=ans;
                ans2=ans;
                ans.clear();
            }
            if(ans2.size()==0)
            {
                printf("NULL\n");
                continue;
            }
            for(it=ans2.begin();it!=ans2.end();++it)
                q.push(*it);
            while(1)
            {
                if(q.size()==1)
                    break;
                w=q.front();
                printf("%d ",w);
                q.pop();
            }
            w=q.front();
            q.pop();
            printf("%d\n",w);
        }
        return 0;
    }
    
    • 1

    Information

    ID
    18492
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By