Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using namespace std;
- int main(){
- int n,k;
- cin>>n>>k;
- set<int> l[n]; bool f[n];int s=0;
- for(int i=0;i<n;++i){f[i]=false;int p;cin>>p;for(int j=0;j<p;++j){int x;cin>>x;l[i].insert(x);}}
- f[0]=true;
- queue<int> q;
- q.push(0);
- f[0]=true;
- while(!q.empty()){
- int i = q.front();q.pop();// cout<<i<<endl;
- f[i]=true;
- ++s;
- for(int j=1;j<n;++j){if(f[j]==false){//cout<<"COMP: "<<j<<endl;
- vector<int> mve(300);
- vector<int>::iterator itr = set_intersection(l[j].begin(),l[j].end(),l[i].begin(),l[i].end(),mve.begin());
- mve.resize(itr-mve.begin());
- if(mve.size()>=k){ q.push(j);/*cout<<"ADD: "<<j<<". size = "<<mve.size()<<endl;*/}
- }}
- // getchar();
- }
- cout<<s;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement