1 条题解

  • 0
    @ 2025-4-12 22:06:17

    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

    信息

    ID
    2896
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者