HDU2444 The Accomodation of Students【匈牙利算法】
题意:
有n个学生,有m对人是认识的,每一对认识的人能分到一间房,问能否把n个学生分成两部分,每部分内的学生互不认识,而两部分之间的学生认识。如果可以分成两部分,就算出房间最多需要多少间,否则就输出No。
思路:
判断是否是二分图,并输出最大匹配数。用'临点填色法'判断,相邻点异色,发现同色则不成立,然后匈牙利算法, 求出个数除2。注:匈牙利算法时间复杂度 '邻接表': O(mn),邻接矩阵: O(n^3)。
代码:
#include <iostream>
#include <stdio.h>
#include <string.h> using namespace std; bool map[][];//连接图
bool visit[];//判断是否访问过
int link[];// 当前链接表
int judge[];// 判断二分图时 0-1表
int queue[];
int n,m; bool BFS()
{ //二分图BFS判断
int v,start = ,end = ;
queue[] = ;
for(int i=;i<=n;i++)
judge[i] = -;
v = queue[start];
judge[] = ;
memset(visit,,sizeof(visit));
while(start<end)
{
v= queue[start];
for(int i = ;i <= n; i++)
{
if(map[v][i])
{
if(judge[i] == -)
{
judge[i] = (judge[v]+)%;
queue[end++] = i;
}
else
{
if(judge[i] == judge[v])
return false;
}
}
}
start++;
}
return true;
} int maxmatch(int r)
{
for(int i=;i<=n;i++)
{
if(map[r][i] && visit[i] == )
{
visit[i] = ;
if(link[i]== || maxmatch(link[i]))
{
link[i] = r;
return ;
}
}
}
return ;
} int main()
{
while(cin>>n>>m)
{
memset(map,,sizeof(map));
int a,b;
for(int i=;i<m;i++)
{
cin>>a>>b;
map[a][b] = ;
map[b][a] = ;
}
//judge the bipartite graph
if(!BFS()) {
cout<<"No"<<endl;
continue;
}
//the maximum number of pair
int num = ;
memset(link,,sizeof(link));
for(int i=;i<=n;i++)
{
memset(visit,,sizeof(visit));
if(maxmatch(i)) num++;
}
cout<< num/ <<endl;
}
return ;
}
HDU2444 The Accomodation of Students【匈牙利算法】的更多相关文章
- HDU2444 The Accomodation of Students —— 二分图最大匹配
题目链接:https://vjudge.net/problem/HDU-2444 The Accomodation of Students Time Limit: 5000/1000 MS (Java ...
- HDU2444 The Accomodation of Students
The Accomodation of Students Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- hdu2444 The Accomodation of Students(推断二分匹配+最大匹配)
//推断是否为二分图:在无向图G中,假设存在奇数回路,则不是二分图.否则是二分图. //推断回路奇偶性:把相邻两点染成黑白两色.假设相邻两点出现颜色同样则存在奇数回路. 也就是非二分图. # incl ...
- HDU2444 The Accomodation of Students(二分图最大匹配)
有n个关系,他们之间某些人相互认识.这样的人有m对.你需要把人分成2组,使得每组人内部之间是相互不认识的.如果可以,就可以安排他们住宿了.安排住宿时,住在一个房间的两个人应该相互认识.最多的能有多少个 ...
- hdu 2444 The Accomodation of Students(二分匹配 匈牙利算法 邻接表实现)
The Accomodation of Students Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- HDU 2444 - The Accomodation of Students - [二分图判断][匈牙利算法模板]
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2444 Time Limit: 5000/1000 MS (Java/Others) Mem ...
- HDU 2444 The Accomodation of Students (偶图判定,匈牙利算法)
题意: 有一堆的学生关系,要将他们先分成两个组,同组的人都不互不认识,如果不能分2组,输出No.若能,则继续.在两组中挑两个认识的人(每组各1人)到一个双人房.输出需要多少个双人房? 思路: 先判定是 ...
- HDU 2444 The Accomodation of Students二分图判定和匈牙利算法
本题就是先推断能否够组成二分图,然后用匈牙利算法求出最大匹配. 究竟怎样学习一种新算法呢? 我也不知道什么方法是最佳的了,由于看书本和大牛们写的匈牙利算法具体分析,看了几乎相同两个小时没看懂,最后自己 ...
- 【01染色法判断二分匹配+匈牙利算法求最大匹配】HDU The Accomodation of Students
http://acm.hdu.edu.cn/showproblem.php?pid=2444 [DFS染色] #include<iostream> #include<cstdio&g ...
随机推荐
- MyBatis:一对一关联查询
MyBatis从入门到放弃三:一对一关联查询 前言 简单来说在mybatis.xml中实现关联查询实在是有些麻烦,正是因为起框架本质是实现orm的半自动化. 那么mybatis实现一对一的关联查询则是 ...
- BZOJ1861[Zjoi2006]书架——非旋转treap
题目描述 小T有一个很大的书柜.这个书柜的构造有些独特,即书柜里的书是从上至下堆放成一列.她用1到n的正整数给每本书都编了号. 小T在看书的时候,每次取出一本书,看完后放回书柜然后再拿下一本.由于这些 ...
- BZOJ3834[Poi2014]Solar Panels——分块
题目描述 Having decided to invest in renewable energy, Byteasar started a solar panels factory. It appea ...
- BZOJ1030[JSOI2007]文本生成器——AC自动机+DP
题目描述 JSOI交给队员ZYX一个任务,编制一个称之为“文本生成器”的电脑软件:该软件的使用者是一些低幼人群,他们现在使用的是GW文本生成器v6版.该软件可以随机生成一些文章―――总是生成一篇长度固 ...
- 遍历List、Map删除元素
遍历List删除元素 方法一: List<String> list = new ArrayList<>(); list.add("1"); list.add ...
- MT【52】空间法向量理解直线条数
[从最简单的做起.]--波利亚 评:线面角转化成线与线的角,这道题还有类似的这类题是学生的难点.
- (伪)再扩展中国剩余定理(洛谷P4774 [NOI2018]屠龙勇士)(中国剩余定理,扩展欧几里德,multiset)
前言 我们熟知的中国剩余定理,在使用条件上其实是很苛刻的,要求模线性方程组\(x\equiv c(\mod m)\)的模数两两互质. 于是就有了扩展中国剩余定理,其实现方法大概是通过扩展欧几里德把两个 ...
- 【BZOJ4830】[HNOI2017]抛硬币(组合计数,拓展卢卡斯定理)
[BZOJ4830][HNOI2017]抛硬币(组合计数,拓展卢卡斯定理) 题面 BZOJ 洛谷 题解 暴力是啥? 枚举\(A\)的次数和\(B\)的次数,然后直接组合数算就好了:\(\display ...
- EasyUI 树形菜单加载父/子节点
通常表示一个树节点的方式就是在每一个节点存储一个 parentid. 这个也被称为邻接列表模型. 直接加载这些数据到树形菜单(Tree)是不允许的. 但是我们可以在加载树形菜单之前,把它转换为标准标准 ...
- MIME 类型(HttpContext.Response.ContentType)列表
按照内容类型排列的 Mime 类型列表 类型/子类型 扩展名 application/envoy evy application/fractals fif application/futurespla ...