#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;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。