/*
translation:
有n个学生,并且给出男女之间的暧昧关系。现在求一个学习小组,使得里面的任何两个人之间不能有暧昧关系。
求这个学习小组最多能够有多少人?
solution:
二分图求最大独立集合
首先明白一个定理:|最大独立集合| + |最小顶点覆盖| == |V|。且在二分图当中有|最大匹配| == |最小顶点覆盖|
所以只要求出最大匹配即可求出最大独立集合。
note:
* 注意这个图是个二分图,注意题目中的提示“The relation "romantically involved" is defined between one
girl and one boy.”。所以同性之间是不会有暧昧关系的。
# 这道题的输入格式有点坑爹。原来的用sstream竟然WA了,而且调试过程中也看不出来哪里有错。
改成现在的方法就过了。
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
#include <sstream>
#include <string>
using namespace std;
const int maxn = 500 + 5;
int match[maxn], n, V;
bool used[maxn];
vector<int> G[maxn];
bool dfs(int v)
{
used[v] = true;
for(int i = 0; i < G[v].size(); i++) {
int u = G[v][i], w = match[u];
if(w < 0 || !used[w] && dfs(w)) {
match[v] = u;
match[u] = v;
return true;
}
}
return false;
}
int hangary()
{
int res = 0;
memset(match, -1, sizeof(match));
for(int v = 0; v < V; v++) {
if(match[v] < 0) {
memset(used, 0, sizeof(used));
if(dfs(v)) res++;
}
}
return res;
}
int main()
{
//freopen("in.txt", "r", stdin);
while(~scanf("%d", &n)) {
getchar();
for(int i = 0; i < maxn; i++) G[i].clear();
int u, v;
for(int i = 0; i < n; i++) {
int u, m, v;
scanf("%d: (%d)", &u, &m);
for(int j = 0; j < m; j++) {
scanf("%d", &v);
G[u].push_back(v);
}
}
V = n;
printf("%d\n", n - hangary());
}
}