hdu2119

来源:互联网 发布:淘宝印度药品代购 编辑:程序博客网 时间:2024/06/06 16:58
/*
分析:

    二分匹配学的还是不行,问了学长后才有的思路……

    建立的是行与列的匹配。



                                        2012-07-14
*/








#include"stdio.h"#include"string.h"struct A{int total;int mem[111];}E[111];int match[111];int visit[111];int DFS(int k){int i;for(i=0;i<E[k].total;i++){if(visit[E[k].mem[i]])continue;visit[E[k].mem[i]]=1;if(match[E[k].mem[i]]==0 || DFS(match[E[k].mem[i]])){match[E[k].mem[i]]=k;return 1;}}return 0;}int main(){int map[111][111];int n,m;int i,l;int ans;while(scanf("%d",&n),n){scanf("%d",&m);for(i=1;i<=n;i++)for(l=1;l<=m;l++)scanf("%d",&map[i][l]);for(i=1;i<=n;i++){E[i].total=0;for(l=1;l<=m;l++)if(map[i][l])E[i].mem[E[i].total++]=l;}memset(match,0,sizeof(match));ans=0;for(i=1;i<=n;i++){if(E[i].total==0)continue;memset(visit,0,sizeof(visit));ans+=DFS(i);}printf("%d\n",ans);}return 0;}


原创粉丝点击