hdu5285-wyh2000 and pupil-(染色法二分图判定)
http://acm.hdu.edu.cn/showproblem.php?pid=5285
题意:把互不认识的人分到两个组,第一组人数尽可能多。
题解:把互不认识的人连起来,当作二分图,二分图可能有多个,对于没有连线的点,扔到第一个图里。二色法对每个二分图染色,记录每个图比较多的颜色的数量累计到答案里。
特判坑:n<=1 或者 m==0
- #include<stdio.h>
- #include<iostream>
- #include<algorithm>
- #include<cstring>
- #include<math.h>
- #include<string>
- #include<map>
- #include<queue>
- #include<stack>
- #include<set>
- #define ll long long
- #define inf 0x3f3f3f3f
- using namespace std;
- int n,m;
- vector<int>a[];
- int color[];
- int zero,one;
- int minn,maxx;
- bool flag;
- void bfs(int x)
- {
- queue<int>que;///对x点进行广搜,二色法,一个标记为0,另一个标记为1
- zero=one=;
- zero++;
- que.push(x);
- color[x]=;
- while(!que.empty()&&flag)
- {
- int now=que.front();
- que.pop();
- int c=color[now];
- int len=a[now].size();
- for(int i=;i<len;i++)
- {
- int next=a[now][i];
- if(color[next]==-)///如果没有被染色过,
- {
- que.push(next);
- if(c==)
- color[next]=,one++;
- else
- color[next]=,zero++;
- }
- else ///被染色过
- {
- if( color[next]==c )
- {
- flag=false;
- break;
- }
- }
- }
- }
- }
- int main()//hdu5285
- {
- int t;
- scanf("%d",&t);
- while(t--)
- {
- scanf("%d%d",&n,&m);
- for(int i=;i<=n;i++)
- a[i].clear();
- memset(color,-,sizeof(color));
- minn=maxx=;
- flag=true;
- if(n<=)
- {
- printf("Poor wyh\n");
- continue;
- }
- if(m==)///特判,否则全部染成0色
- {
- printf("%d 1\n",n-);
- continue;
- }
- while(m--)
- {
- int u,v;
- scanf("%d%d",&u,&v);
- a[u].push_back(v);
- a[v].push_back(u);
- }
- int no=;///没有被染色的点,其中第一组尽量多,则把没有染色的加到多的那一边去
- for(int i=;i<=n && flag;i++)
- {
- if(color[i]==- && a[i].size() )///没有被染色的点 并且 不是独立的
- {
- bfs(i);
- if(zero<one)
- swap(zero,one);
- maxx+=zero;
- minn+=one;
- }
- else if(color[i]==- && a[i].size()==)///独立的点染成颜色0,0是第一组,较多的那一组
- {
- color[i]=;
- maxx++;
- }
- }
- if(flag)
- printf("%d %d\n",maxx,minn);
- else
- printf("Poor wyh\n");
- }
- return ;
- }
hdu5285-wyh2000 and pupil-(染色法二分图判定)的更多相关文章
- 二分图判定+点染色/并查集 BestCoder Round #48 ($) 1002 wyh2000 and pupil
题目传送门 /* 二分图判定+点染色:因为有很多联通块,要对所有点二分图匹配,若不能,存在点是无法分配的,no 每一次二分图匹配时,将点多的集合加大最后第一个集合去 注意:n <= 1,no,两 ...
- HDU 5285 wyh2000 and pupil 判二分图+贪心
题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5285 bc:http://bestcoder.hdu.edu.cn/contests/con ...
- Wrestling Match---hdu5971(2016CCPC大连 染色法判断是否是二分图)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5971 题意:有n个人,编号为1-n, 已知X个人是good,Y个人是bad,m场比赛,每场比赛都有一个 ...
- 染色法判断是否是二分图 hdu2444
用染色法判断二分图是这样进行的,随便选择一个点, 1.把它染成黑色,然后将它相邻的点染成白色,然后入队列 2.出队列,与这个点相邻的点染成相反的颜色 根据二分图的特性,相同集合内的点颜色是相同的,即 ...
- hdu 2444(染色法判断二分图+最大匹配)
The Accomodation of Students Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- poj 2942 Knights of the Round Table(点双连通分量+二分图判定)
题目链接:http://poj.org/problem?id=2942 题意:n个骑士要举行圆桌会议,但是有些骑士相互仇视,必须满足以下两个条件才能举行: (1)任何两个互相仇视的骑士不能相邻,每个骑 ...
- HDU 5285 wyh2000 and pupil(dfs或种类并查集)
wyh2000 and pupil Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Other ...
- 洛谷P1525 关押罪犯(并查集、二分图判定)
本人蒟蒻,只能靠题解AC,看到大佬们的解题思路,%%%%%% https://www.luogu.org/problemnew/show/P1525 题目描述 S城现有两座监狱,一共关押着N名罪犯,编 ...
- HDU 2444:The Accomodation of Students(二分图判定+匹配)
http://acm.hdu.edu.cn/showproblem.php?pid=2444 题意:给出边,判断这个是否是一个二分图,并求最大匹配. 思路:先染色法求出是否是一个二分图,然后再匈牙利求 ...
随机推荐
- python 编码(encode)解码(decode)问题
s = '匆匆'print(s)s1 = s.decode("utf-8") # utf-8 转成 Unicode,decode(解码)需要注明当前编码格式print(s1,typ ...
- DataSet 反射转换成 List<T>
/// <summary> /// DataSet转换成指定返回类型的实体集合 /// </summary> /// <typeparam name="T&qu ...
- SpringBoot第二篇:配置文件详解一
作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10837594.html 版权声明:本文为博主原创文章,转载请附上博文链接! 前言 Sprin ...
- Prometheus 告警分配到指定接收组
Prometheus 告警分配到指定接收组 route属性用来设置报警的分发策略,它是一个树状结构,按照深度优先从左向右的顺序进行匹配. 主要处理流程:1. 接收到Alert,根据labels判断属于 ...
- 使用SonarQube和SonarQube Scanner分析项目
一.概述 SonarQube的安装,请参考链接:https://www.cnblogs.com/xiao987334176/p/12011623.html 配置好sonar的服务端后,接下来就要使用s ...
- SQL参数化出现执行慢问题
问题: 应用程序通过参数化访问数据库时出现执行效率慢,直接通过语句查时秒出结果,通过参数化查询时用时是前者的几十上百倍. 排查:1.使用了错误的执行计划; 解决:清除缓存的执行计划(未能解决上面问题) ...
- Winfrom devexpress 通用权限框架
毕业到现在也快两年了,手上的项目也有好几个,但总感觉不是狠理想,近来把手上杂七杂八的项目整理了一下,结合各个项目的优点,重新开发了一套winfrom+devexpress 通用权限(CS)框架(BS版 ...
- Asp.net MVC企业级开发(02)---Log4net
Log4Net 是用来记录日志的,可以将程序运行过程中的信息输出到一些地方(文件.数据库.EventLog等).日志就是程序的“黑匣子”,可以通过日志查看系统的运行过程,从而发现系统的问题. 日志的作 ...
- Java中的集合类(List,Set.Map)
1.List 1.1 Arraylist 与 LinkedList 区别 是否保证线程安全: ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全: 底层数据结构: Arr ...
- C# 【Http请求返回】性能优化500毫秒到 60 毫秒
偶然发现 C# 的 HttpRequest 要比 Chrome 请求同一Url 慢好多.C# HttpRequest 要500毫秒 而Chrome 只需要 39ms. 作为有责任感的 码农.这个 必须 ...