hdu2444二分图最大匹配
来源:互联网 发布:鲸鱼宝网络不给力 编辑:程序博客网 时间:2024/05/22 02:23
先着色判断是否为二分图,同时把点分成两部分
然后用增广路算法求匹配数就ok
代码写得比较烂 31ms 比较长,用bfs着色
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <queue>#include <vector>using namespace std;vector <int> eg[205];int ex[205];int flag[205];int left1[205];queue<int>Q;int maxm;int n,m;int used[205];int judge(){ for(int i=0; i<n; i++) { if(!flag[i]) { flag[i]=1; Q.push(i); } else continue; while(!Q.empty()) { int u=Q.front(); Q.pop(); for(int i=0; i<eg[u].size(); i++) { int v=eg[u][i]; if(!flag[v]) { flag[v]=(flag[u]&1)+1; Q.push(v); } else if(flag[v]==flag[u]) return 0; } } } return 1;}int match(int cnt){ if(ex[cnt]||used[cnt]) return 0; used[cnt]=1; for(int i=0; i<eg[cnt].size(); i++) { int v=eg[cnt][i]; if(ex[v]) continue; if(left1[v]<0||(!used[v]&&match(left1[v]))) { left1[v]=cnt; return 1; } } ex[cnt]=1; return 0;}void run(){ while(scanf("%d%d",&n,&m)>0) { memset(flag,0,sizeof(flag)); memset(ex,0,sizeof(ex)); memset(left1,0xff,sizeof(left1)); int a,b; for(int i=0; i<n; i++) eg[i].clear(); for(int i=0; i<m; i++) { scanf("%d%d",&a,&b); eg[a-1].push_back(b-1); eg[b-1].push_back(a-1); } if(judge()) { maxm=0; for(int i=0; i<n; i++) { if(flag[i]==1&&!ex[i]) { for(int j=0; j<n; j++) used[j]=0; if(match(i)) maxm++; } } printf("%d\n",maxm); } else printf("No\n"); }}int main(){ run(); return 0;}
0 0
- hdu2444二分图最大匹配
- hdu2444二分图判断+最大匹配
- hdu2444 判断二分图+最大匹配
- hdu2444二分图判定 + 最大匹配
- HDU2444 【二分图判定+最大匹配】
- 【hdu2444】判断二分图+求最大匹配
- hdu2444(二分图判断+二分图最大匹配)
- hdu2444 The Accomodation of Students (二分图判断+最大匹配)
- hdu2444 The Accomodation of Students【二分图判断+最大匹配】
- hdu2444 二分图判定+匹配
- hdu2444 The Accomodation of Students(判断二分匹配+最大匹配)
- 【HDU2444】【匈牙利算法】【二分匹配】【求最大匹配】【染色】
- hdu2444(二分匹配)
- hdu2444二分匹配
- HDU2444(最大匹配)
- HDU2444 The Accomodation of Students(染色法判断二分图+最大匹配)
- hdu2444 The Accomodation of Students--二分图判断 & 最大匹配数
- HDU2444 The Accomodation of Students(判断二分图+最大匹配)
- 致黄陈晨的无悔青春
- JAVA--异常
- android 手机设备找不到 DDMS
- CentOS 关闭SELINUX及添加防火墙规则
- 盘点2014年最赚钱的行业 你在其中吗?
- hdu2444二分图最大匹配
- 传统网吧风光不再 玩家上座率不足50%
- vSphere起始篇——介绍实验环境
- android之生命周期(二)onPause()、onResume()、onStop()详解:有实例
- ubuntu 安装amqp扩展
- Part2 MapGIS云GIS软件组件开发入门
- javascript面试题-1
- 拖拽Devexpress的GridControl的行到PanelControl
- 全面了解TLC NAND技术以及市场现状