poj 2724 二分图匹配
来源:互联网 发布:影视鉴赏网络课答案16 编辑:程序博客网 时间:2024/06/03 17:25
#include<stdio.h>#include<string.h>#define N 1025int n,m,cnt;int map[N][N],vis[N],match[N],num[N];int dfs(int x){int i;for(i=0;i<cnt;i++){if(!vis[num[i]]&&map[x][num[i]]){vis[num[i]]=1;if(match[num[i]]==-1||dfs(match[num[i]])){match[num[i]]=x;return 1;}}}return 0;}int solve(){int i,ans=0;memset(match,-1,sizeof(match));for(i=0;i<cnt;i++){memset(vis,0,sizeof(vis));if(dfs(num[i]))ans++;}return ans;}int main(){char st[100];int use[1025],res1,res2,i,j,c;while(~scanf("%d%d",&n,&m)){cnt=0;memset(num,0,sizeof(num));memset(use,0,sizeof(use));memset(map,0,sizeof(map));if(n==0&&m==0)break;while(m--){ scanf("%s",st);res1=0;res2=0;for(i=0;i<n;i++){res1<<=1;res2<<=1;if(st[i]=='*'){res1+=0; res2+=1;}else{res1+=st[i]-'0';res2+=st[i]-'0';}}if(!use[res1]){ use[res1]=1; num[cnt++]=res1;} if(!use[res2]){ use[res2]=1; num[cnt++]=res2;}} for(i=0;i<cnt;i++)for(j=0;j<cnt;j++){c=num[i]^num[j];if(c&&(c&(c-1))==0)map[num[i]][num[j]]=1;}printf("%d\n",cnt-solve()/2);}}
0 0
- poj 2724 二分图匹配
- poj 2724 二分匹配
- POJ 3041 二分图匹配
- poj 2226 二分图匹配
- poj 2446 (二分图匹配)
- POJ 2446 二分图匹配
- POJ-1469(二分图匹配)
- Asteroids+POJ+二分图匹配
- poj 1466(二分图匹配)
- poj 1719(二分图匹配)
- poj 3216(二分图匹配)
- poj 2771(二分图匹配)
- poj 1325(二分图匹配)
- poj 2239(二分图匹配)
- poj 3041 二分图匹配
- POJ 1274 二分图匹配
- POJ-1274-二分图匹配
- poj 1466 二分图匹配
- java基础------》数据结构---》交换排序(冒泡排序,快速排序),选择排序,系统排序,插入排序
- 链表划分
- B1001. 害死人不偿命的(3n+1)猜想(15')
- JavaScript eval() 函数详解
- 边做边爱(1)——mapbox帮对象做分析图
- poj 2724 二分图匹配
- 震惊篇(一)——如何通过面向对象的思想实现环形队列
- [蓝桥杯]-振兴中华
- 【Bzoj1196】公路修建问题
- 【TV Picture Quality
- NYOJ-1015(判断是否为二分图)
- 2017/3/31-代码修改的流程问题
- Linux的版本
- 一种在windows和linux间传文件的方法