二分图匹配匈牙利算法(poj1469验证)
2011-09-21 05:31
295 查看
读入的时候就进行匹配,在这个匹配的基础上寻找增广路,更新之 #include<iostream> #include<cstdio> #include<string.h> using namespace std; const int MAX=400; int cx[MAX],cy[MAX]; int sx[MAX],sy[MAX]; int g[MAX][MAX]; int t,n,m; int dfs(int k){ cx[k]=1; for(int i=1;i<=m;++i){ if(g[k][i]!=-1&&cy[i]==-1){ cy[i]=1; if(sy[i]==-1||dfs(sy[i])){ sy[i]=k; sx[k]=i; return 1; } } } return 0; } int main(){ scanf("%d",&t); while(t--){ scanf("%d%d",&n,&m); int ans=0; memset(sx,-1,sizeof(sx)); memset(sy,-1,sizeof(sy)); memset(g,-1,sizeof(g)); for(int i=1;i<=n;++i){ int k; scanf("%d",&k); while(k--){ int j; scanf("%d",&j); g[i][j]=1; if(sx[i]==-1&&sy[j]==-1){ sx[i]=j; sy[j]=i; ++ans; } } } for(int i=1;i<=n;++i){ if(sx[i]==-1){ memset(cx,-1,sizeof(cx)); memset(cy,-1,sizeof(cy)); ans+=dfs(i); } } //printf("%d\n",ans); if(ans==n) printf("YES\n"); else printf("NO\n"); } return 0; }
相关文章推荐
- poj 匈牙利二分匹配算法2239 Selecting Courses
- 【二分匹配匈牙利算法模板】
- 二分图匹配之 匈牙利算法简单学习后感
- 二分匹配,匈牙利算法
- hdu 1054 Strategic Game(模板) 最大二分匹配,最小点覆盖 匈牙利算法
- 二分匹配,匈牙利算法
- HDU2444 The Accomodation of Students(二分匹配 匈牙利算法)
- 一道hdu 2063彻底搞懂二分匹配--匈牙利算法
- 最大二分匹配(匈牙利算法)
- hihocoder 1122最大二分匹配匈牙利算法
- hdu 1498 50 years, 50 colors(二分匹配_匈牙利算法)
- 二分匹配,匈牙利算法
- HDU2063-过山车(二分匹配 +匈牙利算法)
- 二分匹配——匈牙利算法;
- 二分匹配(匈牙利算法)
- HDU-1045-Fire Net [二分匹配][匈牙利算法]
- hdu 1150 Machine Schedule(二分匹配,简单匈牙利算法)
- 二分匹配(匈牙利算法)
- HDU-2063-过山车【匈牙利算法】【二分匹配】
- HDU-1179-Ollivanders: Makers of Fine Wands since 382 BC.【二分匹配】【匈牙利算法】