提交时间:2024-08-30 15:10:42

运行 ID: 32046

#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; }