POJ1274 The Perfect Stall [二分图最大匹配 匈牙利算法]

来源:互联网 发布:千里驰援李天霞 知乎 编辑:程序博客网 时间:2024/05/22 01:54

二分图最大匹配入门题。

#include<iostream>#include<vector>#include<string>#include<queue>#include<algorithm>#define llong long long#define Min(a,b) (a<b?a:b)#define Max(a,b) (a>b?a:b)#define Abs(a) ((a)>0?(a):-(a))#define Mod(a,b) (((a)-1+(b))%(b)+1)using namespace std;const int N=205;const int M=60005;const int inf=1e10;int n,m;bool mat[N][N];bool vis[N];int link[N];bool dfs(int now){for(int i=1;i<=m;i++){if(mat[now][i]&&!vis[i]){vis[i]=true;if(link[i]==0||dfs(link[i])){link[i]=now;return true;}}}return false;}int main(){while(scanf("%d%d",&n,&m)!=EOF){memset(link,0,sizeof(link));memset(mat,0,sizeof(mat));for(int i=1;i<=n;i++){int tmp,v;scanf("%d",&tmp);for(int j=1;j<=tmp;j++){scanf("%d",&v);mat[i][v]=true;}}int ans=0;for(int i=1;i<=n;i++){memset(vis,0,sizeof(vis));if(dfs(i))ans++;}printf("%d\n",ans);}return 0;}


原创粉丝点击