很囧的GIRLS AND BOYS 的代码....加上注解就错..没加就过了..
#include<iostream>
#include<cstdio>
#include<vector>
#define M 2000
using namespace std;
int m,n;
int match[M];
int v[M];
vector<int>g[M];
int dfs(int p)
{
int i,t;
for(i=0;i<g[p].size();i++)
{
if(!v[g[p][i]])
{
v[g[p][i]]=1;
t=match[g[p][i]];
match[g[p][i]]=p;
if(t==-1||dfs(t))return 1;
match[g[p][i]]=t;
}
}
return 0;
}
int mat()
{
int i,res=0;
memset(match,-1,sizeof(match));
for(i=0;i<n;i++)
{
memset(v,0,sizeof(v));
if(dfs(i))res++;
}
return res;
}
int main()
{
while(scanf("%d",&n)>0)
{
memset(g,0,sizeof(g));
for(int i=0;i<n;i++)
{
int a;
scanf("%d",&a);
getchar();
getchar();
getchar();
scanf("%d",&m);
getchar();
getchar();
for(int j=0;j<m;j++)
{
int b;
scanf("%d",&b);
//if(b<a)continue;//注意这行..加了会WA的!
g[a].push_back(b);
}
}
printf("%d\n",n-mat()/2);
}
}