hdu 1054

来源:互联网 发布:原生js获取index 编辑:程序博客网 时间:2024/06/10 07:12

OJ

#include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <vector>#include <map>#include <set>#include <string>#include <cstring>#include <list>#include <queue>#include <stack>#include <cmath>using namespace std;#define PF(x) (scanf("%d",&x))#define PT(x,y) (scanf("%d%d",&x,&y))#define PR(x) (printf("%d\n",x))#define PRT(x,y)(printf("%d %d\n",x,y))#define PB(x)(scanf("%I64d",&x))#define PRB(x)(printf("%I64d\n",(x)))typedef __int64 LL;#define N 1505#define M 1505#define Mod 1000#define Inf 0x7fffffffint n;vector<int> G[M];int is[M];int match[M];bool find(int x){for(int i=0;i<(int)G[x].size();i++){if(!is[G[x][i]]){is[G[x][i]] = 1;if(match[G[x][i]] == -1 || find(match[G[x][i]])){match[G[x][i]] = x;return true;}}}return false;}void init(){while(scanf("%d",&n)!=EOF){for(int i=0;i<=n;i++)if(!G[i].empty())G[i].clear();for(int i=0;i<n;i++){int a,b;scanf("%d:(%d)",&a,&b);for(int j=0;j<b;j++){int x;PF(x);G[a].push_back(x);G[x].push_back(a);}}memset(match,-1,sizeof(match));int result = 0;for(int i=0;i<n;i++){memset(is,0,sizeof(is));if(find(i)) result++;}PR(result/2);}return ;}int main(){init();return 0;}