poj 1466 二分图匹配

来源:互联网 发布:农村淘宝合伙人官网 编辑:程序博客网 时间:2024/05/01 08:47
#include<stdio.h>#define N 500+16int map[N][N],match[N],vis[N];int n;int dfs(int x){int i;for(i=0;i<n;i++){if(!vis[i]&&map[x][i]){vis[i]=1;if(match[i]==-1||dfs(match[i])){match[i]=x;return 1;}}}return 0;}int solve(){int ans=0,i;memset(match,-1,sizeof(match));for(i=0;i<n;i++){memset(vis,0,sizeof(vis));if(dfs(i))ans++;}return ans;}int main(){int i,a,b,c;while(~scanf("%d",&n)){memset(map,0,sizeof(map));for(i=1;i<=n;i++){scanf("%d: (%d)",&a,&b);while(b--){scanf("%d",&c);map[a][c]=1;}}printf("%d\n",n-solve()/2);}}

0 0
原创粉丝点击