#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int mat[1010][1010]; int link[1010]; int vis[1010]; int n,m; bool find(int u) { int v; for(v=0;v<n;v++) if(mat[u][v]&&!vis[v]) { vis[v]=true; if(link[v]==-1||find(link[v])) { link[v]=u; return true; } } return false; } int pipei() { int res=0; int u; memset(link,-1,sizeof(link)); for(u=0;u<n;u++) { memset(vis,0,sizeof(vis)); if(find(u)) res++; } return res; } int main() { int i,j,k; int temp; int from ,to; while(scanf("%d",&n)!=EOF) { memset(mat,0,sizeof(mat)); for(i=0;i<n;i++) { scanf("%d: (%d)",&from,&m); while(m--) { scanf("%d",&to); //printf("%d.. ",to); mat[from][to]=1; } } int ans=pipei(); printf("%d ",n-ans/2); } return 0; }