<题目链接> 题目大意: 有N个人,M组互相认识关系互相认识的两人分别为a,b,将所有人划分为两组,使同一组内任何两人互不认识,之后将两个组中互相认识的人安排在一个房间,如果出现单人的情况则不安排房间.输出最大需要安排房间的数量. 解题分析:其实题意就是叫我们先判断该图是否为二分图,如果是的话,给出它的最大匹配.判断是否是二分图,我们可以用BFS或DFS对每个节点进行染色,有直接认识关系的人染成不同颜色,判断再染色的过程中是否发生冲突.最后再用匈牙利求出最大匹配. #include <c…
题意:有n个学生,有m对人是认识的,每一对认识的人能分到一间房,问能否把n个学生分成两部分,每部分内的学生互不认识,而两部分之间的学生认识.如果可以分成两部分,就算出房间最多需要多少间,否则就输出No. 首先判断是否为二分图,然后判断最大匹配 Sample Input 4 4 1 2 1 3 1 4 2 3 6 5 1 2 1 3 1 4 2 5 3 6Sample Output No 3 #include<iostream> #include<string.h> #include…
题意:第一行给出数字n个学生,m条关系,关系表示a与b认识,判断给定数据是否可以构成二分图,如果可以,要两个互相认识的人住一个房间,问最大匹配数(也就是房间需要的最小数量) 思路:要看是否可以构成二分图,就是二分图的判断,这里主要记录一下自己想的判断方法:用一个数组记录分类,0表示这个人没有被分类,1,2表示二分图两个部分,边输入边判断是否是二分图,如果两个人都是0,那么将这两个人分别赋值1,2即可,若两人数值不相同,但有一个为0,将为零的这个赋值1或2,,若两人值相等且不为0,说明矛盾了,fl…
http://acm.hdu.edu.cn/showproblem.php?pid=2444 大意是给定n个学生,他们之间可能互相认识,首先判断能不能将这些学生分为两组,使组内学生不认识: 现想将学生两两分组,且保证每一组的学生都认识,这样分组可达到的最大组数为多大? 判断二分图,然后求匈牙利算法求最大匹配数 染色法判断二分图(脑抽用vector跑的特别慢) #include<cstdio> #include<cstring> #include<vector> usin…
/*655.二分图-安排房间 (10分)C时间限制:3000 毫秒 |  C内存限制:3000 Kb题目内容: 有一群学生,他们之间有的认识有的不认识.现在要求把学生分成2组,其中同一个组的人相互不认识.如果你分成功了,那么就安排双人间,安排的规矩是两个人分别属于不同的组,并且认识.输入描述首先输入两个整数n,m,表示有n个学生, m个认识对随后m行表示认识的学生对. 输出描述如果不能分组成功则输出“No”否则输出有多少个房间安排学生配对. 输入样例4 41 21 31 42 36 51 21…
http://acm.hdu.edu.cn/showproblem.php?pid=2444 [DFS染色] #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<algorithm> using namespace std; ; const int maxm=maxn*maxn; struct e…
http://acm.hdu.edu.cn/showproblem.php?pid=2444 The Accomodation of Students Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 2444 Description There are a group of students. Some of them may know…
题目大意:有一群人他们有一些关系,比如A认识B, B认识C, 但是这并不意味值A和C认识.现在给你所有互相认识的学生,你的任务是把所有的学生分成两个一组, 住在一个双人房里.相互认识的同学可以住在一个双人房里. 输入数据: 有n个学生 m个关系(m对是相互认识的) 接下来m行是,是m个关系. 如果能够匹配成功则输出需要双人房的个数,否则输出'No'   思路:先判断是否是个二分图,可以使用黑白染色的方法来判断.然后再进行最大匹配.   #include<stdio.h> #include<…
本题就是先推断能否够组成二分图,然后用匈牙利算法求出最大匹配. 究竟怎样学习一种新算法呢? 我也不知道什么方法是最佳的了,由于看书本和大牛们写的匈牙利算法具体分析,看了几乎相同两个小时没看懂,最后自己直接看代码,竟然不到半个小时看懂了.然后就能够直接拿来解题啦. 比方topcoder上有这个算法的非常具体的分析.真没看懂. 代码竟然比分析更清晰了?我也不好下结论. 可是我认为基本的思想还是有作用的. 说说我对这个算法的理解吧: 1 假设二分图分为两个集合 U, V,那么从一个集合U出发 2 U的…
http://acm.hdu.edu.cn/showproblem.php?pid=2444 题意:给出边,判断这个是否是一个二分图,并求最大匹配. 思路:先染色法求出是否是一个二分图,然后再匈牙利求出最大匹配.注意输出是"No"而不是"NO"!!! #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <…