题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2444思路:首先要判断能否构成二分图,用bfs对当前点u染色,对u的邻接点v的颜色进行判断,如果为染色,则染色后入队列,否则,判断color[v]==color[u],如果相等,说明无法构成二部图 ,直接返回false即可。最后就是简单的匈牙利直接求最大匹配就可以了,不过这儿是无向图,最后要除以2。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<queue>
 6 #include<vector>
 7 using namespace std;
 8 #define MAXN 222
 9 vector<int>vet[MAXN];
10 int color[MAXN];
11 bool mark[MAXN];
12 int match[MAXN];
13 int n,m;
14
15 bool bfs(){
16    queue<int>Q;
17    Q.push(1);mark[1]=true;
18    while(!Q.empty()){
19       int u=Q.front();
20       Q.pop();
21       int c=color[u];
22       for(int i=0;i<vet[u].size();i++){
23          int v=vet[u][i];
24          if(!mark[v]){ mark[v]=true;color[v]=-c;Q.push(v); }
25          else if(color[v]==c)return false;
26       }
27    }
28    return true;
29 }
30
31 bool dfs(int u){
32    for(int i=0;i<vet[u].size();i++){
33       int v=vet[u][i];
34       if(!mark[v]){
35          mark[v]=true;
36          if(match[v]==-1||dfs(match[v])){
37             match[v]=u;
38             return true;
39          }
40       }
41    }
42    return false;
43 }
44
45
46 int MaxMatch(){
47    int res=0;
48    memset(match,-1,sizeof(match));
49    for(int i=1;i<=n;i++){
50       memset(mark,false,sizeof(mark));
51       res+=dfs(i);
52    }
53    return res;
54 }
55
56
57 int main(){
58 //   freopen("1.txt","r",stdin);
59    int u,v;
60    while(~scanf("%d%d",&n,&m)){
61       for(int i=1;i<=n;i++)vet[i].clear();
62       for(int i=1;i<=m;i++){
63          scanf("%d%d",&u,&v);
64          vet[u].push_back(v);
65          vet[v].push_back(u);
66       }
67       memset(color,-1,sizeof(color));
68       memset(mark,false,sizeof(mark));
69       if(!bfs()){ puts("No");continue; }
70       int ans=MaxMatch();
71       printf("%d\n",ans/2);
72    }
73    return 0;
74 }

View Code

转载于:https://www.cnblogs.com/wally/archive/2013/06/03/3116104.html

hdu 2444(二分图的判断以及求最大匹配)相关推荐

  1. HDU - 2444 The Accomodation of Students(二分图判断+二分图最大匹配)

    题目链接:点击查看 题目大意:给出n个学生,他们之间有m个认识关系,但认识关系不具有传递性,比如A认识B,B认识C,A不一定认识C,现在给出认识关系,先判断是否能够将所有学生分为两个集合A和B中去,集 ...

  2. HDU 2444:The Accomodation of Students(二分图判定+匹配)

    http://acm.hdu.edu.cn/showproblem.php?pid=2444 题意:给出边,判断这个是否是一个二分图,并求最大匹配. 思路:先染色法求出是否是一个二分图,然后再匈牙利求 ...

  3. HDU 2444 The Accomodation of Students 二分图匹配

    HDU 2444 The Accomodation of Students 二分图匹配 题目来源: HDU 题意: 给出学生数n和关系数m,接下来给出m个关系. 要求将学生分成两部分,每一部分不能有互 ...

  4. hdu 4160 Dolls 匈牙利算法求最大匹配

    Dolls                                                                               Time Limit: 2000 ...

  5. 二分图大讲堂——彻底搞定最大匹配数(最小覆盖数)、最大独立数、最小路径覆盖、带权最优匹配

    二分图匹配 二分图大讲堂--彻底搞定最大匹配数(最小覆盖数).最大独立数.最小路径覆盖.带权最优匹配(转) 文本内容框架: §1图论点.边集和二分图的相关概念和性质 §2二分图最大匹配求解 匈牙利算法 ...

  6. 蓝桥杯JAVA-22.二分图的判断及其最大匹配模板(JAVA实现)

    个人博客 www.tothefor.com 蓝桥杯复习知识点汇总 纸上得来终觉浅,绝知此事要躬行.路漫漫其修远兮,吾将上下而求索!知识是经过历史的巨人沉淀下来的,别总想着自己能够快速学会,多花点时间去 ...

  7. HDU 2444 The Accomodation of Students (二部图+染色)

    The Accomodation of Students Time Limit : 5000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Ja ...

  8. HDU 1533 二分图最小权匹配 Going Home

    带权二分图匹配,把距离当做权值,因为是最小匹配,所以把距离的相反数当做权值求最大匹配. 最后再把答案取一下反即可. 1 #include <iostream> 2 #include < ...

  9. 判断并求出两个圆的交点(平面几何)

    参考Knut Andreas Lie的Unstructured PEBI-grids Adapting to Geological Features in Subsurface Reservoirs这 ...

最新文章

  1. 关于hbase的read操作的深入研究 region到storefile过程
  2. 数据挖掘应用的一些场景和对应算法
  3. hadoop学习3 查找块的位置
  4. uip UDPclient模式通信移植,当地port随机
  5. OJ1025: 最大字符
  6. Go的nil切片与空切片一样吗?这么答,面试官让回去等信儿
  7. linux mariadb忘记密码,忘记MySQL/MariaDB root密码的解决方法
  8. python练习题及答案-python装饰器练习题及答案
  9. 阿里实人认证android,Android客户端接入
  10. Response.Redirect导致session丢失的解决办法
  11. SAP GUI 安全性 下载文件
  12. 怎样将自己学到的东西发布到博客
  13. js 实现新年倒计时 定时器使用
  14. iOS CMMotionManager之加速计、陀螺仪
  15. 基于MATLAB视频的人体姿态检测
  16. Solr高级查询Facet
  17. 电子合同是什么意思,电子合同怎么签才有效?
  18. [进阶]-多线程、多进程、异步IO实用例子
  19. SQL必知必会(一)SQL基础篇
  20. 鸟哥的linux私房菜内容,《鸟哥的Linux私房菜》读书笔记

热门文章

  1. C语言 | 内部与外部函数
  2. C语言 | 循环语句总结
  3. ar面部识别_国内手机厂商AR布局报告
  4. wincc历史数据库_WinCC系统的基本功能介绍——自动化工程师必备
  5. 想要导航提示直接进入_北斗导航已开始提供全球服务,你的手机怎样连接北斗?...
  6. 【渝粤教育】国家开放大学2018年春季 0579-22T电路及磁路(2)(一) 参考试题
  7. 【渝粤题库】广东开放大学 C语言程序设计 形成性考核
  8. 亿佰特物联网通信-智慧城市的未来城市愿景
  9. kafka metric java,jmx_exporter+prometheus+grafana实现kafka metric监控
  10. centos编译mysql5.6_centos7上编译安装mysql5.6