Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
32046 | 22fhq | 【S】T3 | C++ | 运行超时 | 20 | 2000 MS | 524348 KB | 1418 | 2024-08-30 15:10:42 |
#include<bits/stdc++.h> #define int long long using namespace std; int n,c,q,k; set<int>b[200005]; void read(int &x){ x=0; bool f=0; char c=getchar(); while(!isdigit(c)){ if(c=='-')f=1; c=getchar(); } while(isdigit(c)){ x=x*10+c-'0'; c=getchar(); } if(f)x=-x; return; } set<int>js(set<int> x,set<int> y){ set<int>res; for(auto it=x.begin();it!=x.end();it++){ if(y.find(*it)!=y.end())res.insert(*it); } return res; } set<int>bs(set<int> x,set<int> y){ set<int>res; for(auto it=x.begin();it!=x.end();it++){ res.insert(*it); } for(auto it=y.begin();it!=y.end();it++){ res.insert(*it); } return res; } signed main(){ // freopen("set.in","r",stdin); //freopen("set.out","w",stdout); read(n); for(int i=1;i<=n;i++){ read(c); if(!c){ b[i].insert(i); continue; } int x; read(x); set<int>res=b[x]; while(--c){ read(x); res=js(res,b[x]); } b[i]=res; b[i].insert(i); } read(q); while(q--){ read(k); int x; set<int>res; while(k--){ read(x); res=bs(res,b[x]); } cout<<res.size()<<endl; } return 0; }