Source Code Problem: 1466 User: zhouxc Memory: 4224K Time: 3813MS Language: G++ Result: Accepted Source Code #include "stdio.h" #include "string.h" int number,l_number,t,a,lover[1000],R[1000][1000]; bool visit[1000]; char c; int Max_Match(int s) { for(int i=0;i<number;i++) { if(!visit[i]&&R[s][i]) { visit[i]=true; if(lover[i]==-1||Max_Match(lover[i])) { lover[i]=s; return true; } } } return false; } int main() { // freopen("data.in","r",stdin); while(scanf("%d",&number)!=EOF) { memset(R,0,sizeof(R)); memset(lover,-1,sizeof(lover)); int match=0; for(int i=0;i<number;i++) { scanf("%d%c%c%c%d%c",&l_number,&c,&c,&c,&t,&c); for(int j=0;j<t;j++) { scanf("%d",&a); R[a][l_number]=1; R[l_number][a]=1; } } for(int i=0;i<number;i++) { memset(visit,false,sizeof(visit)); if(Max_Match(i)) match++; } printf("%d/n",number-match/2); } // while(1); return 0; }