1 条题解
-
0
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
- 上传者