#include<bits/stdc++.h> #define N 10007 using namespace std; vector<int> p[N]; bool vis[N*2]; int mat[N*2]; bool find(int x){ for(int i=p[x].size()-1;i>=0;--i){ int y=p[x][i]; if(vis[y]) continue; vis[y]=true; if(mat[y]==-1||find(mat[y])){ mat[y]=x; return true; } } return false; } int main(){ int n; int i; int s,m,e; while(cin>>n){ for(i=0;i<n;++i) p[i].clear(); memset(mat,-1,sizeof(mat)); for(i=0;i<n;++i){ scanf("%d: (%d)",&s,&m); while(m--){ scanf("%d",&e); p[s].push_back(e); } } int ans=0; for(i=0;i<n;++i){ memset(vis,false,sizeof(vis)); if(find(i)) ans++; } cout<<ans<<endl; } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
today lazy . tomorrow die .