POJ-2724-Purifying Machine
来源:互联网 发布:生态安全调查数据库 编辑:程序博客网 时间:2024/06/05 14:07
二分图匹配,注意判重~
代码:
#include<cstdio>#include<cstring>#include<iostream>#include<vector>using namespace std;const int maxn=1<<11;int n,m,link[maxn];bool vis[maxn],y[maxn];vector<int> g[maxn];void Init(){ for(int i=0;i<(1<<n);i++) g[i].clear();}bool find(int x){ for(int i=0;i<g[x].size();i++) if(!y[g[x][i]]) { y[g[x][i]]=1; if(link[g[x][i]]==-1||find(link[g[x][i]])) { link[g[x][i]]=x; return true; } } return false;}int main(){ while(scanf("%d%d",&n,&m)&&(n+m)) { Init(); memset(vis,0,sizeof(vis)); memset(link,-1,sizeof(link)); for(int i=0;i<m;i++) { char str[20]; scanf("%s",str); int pos=-1,val=0; for(int j=0;j<n;j++) { if(str[j]=='*') pos=j; else if(str[j]=='1') val|=1<<j; } vis[val]=1; if(pos!=-1) vis[val|(1<<pos)]=1; } int cnt=0; for(int i=0;i<(1<<n);i++) if(vis[i]) { cnt++; for(int j=i+1;j<(1<<n);j++) if(vis[j]) { int c=i^j; if(c&&!(c&(c-1))) { g[i].push_back(j); g[j].push_back(i); } } } int ans=0; for(int i=0;i<(1<<n);i++) if(vis[i]) { memset(y,0,sizeof(y)); if(find(i)) ans++; } printf("%d\n",cnt-ans/2); } return 0;}
0 0
- POJ 2724 Purifying Machine
- POJ-2724-Purifying Machine
- POJ 2724 Purifying Machine
- poj 2724 Purifying Machine 二分匹配
- poj 2724 Purifying Machine 最小路径覆盖
- poj 2724 Purifying Machine (最小边覆盖)
- POJ 2724 Purifying Machine 已翻译
- 2724 Purifying Machine //MAXMATCH
- POJ 2724 Purifying Machine (二分图最大独立集Hungary)
- 【二分图+最大匹配】北大 poj 2724 Purifying Machine
- poj 2724 Purifying Machine 二分图最大匹配
- POJ 2724 Purifying Machine(二分图最大匹配)
- POJ 2724 Purifying Machine(最大独立集)
- POJ - 2724 Purifying Machine 二分图 最大匹配
- POJ 2724 Purifying Machine(二分图最大匹配)
- poj 2724 Purifying Machine(二分图最大匹配)
- poj2724 Purifying Machine
- poj2724 Purifying Machine
- 咳咳咳 可可
- date命令
- 支付宝接口程序、文档及解读(ASP.NET)
- Entity FrameWork初始化数据库的四种策略
- gcc 多源文件的编译方法
- POJ-2724-Purifying Machine
- sql语句的使用
- 今天的问题
- Javascript模块化编程(一):模块的写法
- 学习视频
- hdu 4968 Improving the GPA(dp)
- nyoj 12 喷水装置(二)【贪心】+【区间完全覆盖覆盖】
- msdn之dll
- Visual Studio (2010)上手