wyh2000 and pupil

 Accepts: 93
 Submissions: 925
 Time Limit: 3000/1500 MS (Java/Others)
 Memory Limit: 131072/65536 K (Java/Others)
问题描写叙述
青年理论计算机科学家wyh2000在教导他的小学生。
共同拥有n个小学生,编号为1−n。为了添加小学生之间的凝聚力,wyh2000决定将全部小学生分成2组,每组都至少有1个人。
可是有些小学生之间并不认识,并且假设a不认识b,那么b也不认识a。 Wyh2000希望每组中的小学生都互相认识。并且第一组的人要尽可能多。
请你帮wyh2000求出第一组和第二组的人数是多少。假设找不到分组方案,则输出"Poor wyh"。
输入描写叙述
第一行一个数T,表示数据组数。
对于每组数据,第一行两个数n,m,表示小学生数量和互相不认识的小学生的数量。 接下来m行,每行两个数x,y(x<y),表示x不认识y,y不认识x。 保证一对(x,y)仅仅会出现一次。 T≤10,0≤n,m≤100000
输出描写叙述
对于每组数据,输出答案。
输入例子
2
8 5
3 4
5 6
1 2
5 8
3 5
5 4
2 3
4 5
3 4
2 4
输出例子
5 3
Poor wyh
/*
Author: 2486
Memory: 7448 KB Time: 592 MS
Language: G++ Result: Accepted
VJ RunId: 4055769 Real RunId: 14058285
Public: No Yes
*/
/*
假设a不认识b,那么在a,b间连一条边,这样有解当且仅当这张图是二分图。
由于可能有多个二分图。而题目要求第一组的人尽可能多,所以贪心的选择就可以。 要注意m=0的情况。 */
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
const int maxn=100000+5;
vector<int>G[maxn];
int col[maxn],T;
int n,m,a,b,acnt,bcnt;
void init(int x) {
for(int i=1; i<=x; i++) {
G[i].clear();
}
}
bool bfs(int u) {
queue<int>k;
k.push(u);
col[u]=1;
while(!k.empty()) {
int s=k.front();
if(col[s]==1)acnt++;
else bcnt++;
k.pop();
for(int i=0; i<G[s].size(); i++) {
if(col[G[s][i]]==-1) {
col[G[s][i]]=!col[s];
k.push(G[s][i]);
continue;
}
if(col[G[s][i]]==col[s])return false;
}
}
return true;
}
void slove() {
memset(col,-1,sizeof(col));
bool flag=false;
int Max=0;
for(int i=1; i<=n; i++) {
acnt=0,bcnt=0;
if(col[i]==-1&&!bfs(i)) {
flag=true;
break;
}
Max+=max(acnt,bcnt);//必须这么做,由于这里面为1的或者为0的不一定就是同一阵营。 }
if(flag)printf("Poor wyh\n");
else printf("%d %d\n",Max,n-Max);
}
int main() {
scanf("%d",&T);
while(T--) {
scanf("%d%d",&n,&m);
init(n);
for(int i=0; i<m; i++) {
scanf("%d%d",&a,&b);
G[a].push_back(b);
G[b].push_back(a);
}
if(n<2) {//题目要求
printf("Poor wyh\n");
continue;
}
if(m==0) {//题目要求
printf("%d 1\n",n-1);
continue;
}
slove();
}
return 0;
}

wyh2000 and pupil的更多相关文章

  1. HDU 5285 wyh2000 and pupil 判二分图+贪心

    题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5285 bc:http://bestcoder.hdu.edu.cn/contests/con ...

  2. HDU 5285 wyh2000 and pupil(dfs或种类并查集)

    wyh2000 and pupil Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Other ...

  3. 二分图判定+点染色/并查集 BestCoder Round #48 ($) 1002 wyh2000 and pupil

    题目传送门 /* 二分图判定+点染色:因为有很多联通块,要对所有点二分图匹配,若不能,存在点是无法分配的,no 每一次二分图匹配时,将点多的集合加大最后第一个集合去 注意:n <= 1,no,两 ...

  4. HDU 5285:wyh2000 and pupil

    wyh2000 and pupil  Accepts: 93  Submissions: 925  Time Limit: 3000/1500 MS (Java/Others)  Memory Lim ...

  5. HDU 5285 wyh2000 and pupil (二分图着色)

    题意: 共有n个小学生,编号为1−n.将所有小学生分成2组,每组都至少有1个人.但是有些小学生之间并不认识,而且如果a不认识b,那么b也不认识a.Wyh2000希望每组中的小学生都互相认识.而且第一组 ...

  6. HDU 5285 wyh2000 and pupil

    题意:有一群人,已知某两人之间互相不认识,要把这群人分成两部分,每部分至少一人,且在每部分内没有人互不认识. 解法:图染色.某场bestcoder第二题……看完题觉得是个二分图……完全不会二分图什么的 ...

  7. hdu 5285 wyh2000 and pupil(二染色)

    第一次用vector解得题.值得纪念,这道题是二染色问题,我用bfs解得.就是染色,推断,计数问题,其 实挺简单的,就是得判一下特殊情况,当n<2的时候就不能有解,由于题目要求每一个组至少有一个 ...

  8. Hdu 5285 wyh2000 and pupil (bfs染色判断奇环) (二分图匹配)

    题目链接: BestCoder Round #48 ($) 1002 题目描述: n个小朋友要被分成两班,但是有些小朋友之间是不认得的,所以规定不能把不认识的小朋友分在一个班级里面,并且一班的人数要比 ...

  9. ACM: HDU 5285 wyh2000 and pupil-二分图判定

     HDU 5285  wyh2000 and pupil Time Limit:1500MS     Memory Limit:65536KB     64bit IO Format:%I64d &a ...

随机推荐

  1. HTML、CSS知识点总结_D

    一,html+css基础 1-1 Html和CSS的关系 学习web前端开发基础技术需要掌握:HTML.CSS.JavaScript语言.下面我们就来了解下这三门技术都是用来实现什么的: 1. HTM ...

  2. js request学习

    SP的内置对象在JSP页面中无须声明就可以直接使用,其内置对象常用的有Request,response,session,application,out,config,pageCOntext reque ...

  3. swift final关键字、?、!可选与非可选符

    ?符号: 可选型 在初始化时可以赋值为nil !符号:  隐形可选型 类型值不能为nil,如果解包后的可选类型为nil会报运行时错误,主要用在一个变量/常量在定义瞬间完成之后值一定会存在的情况.这主要 ...

  4. Neural Networks and Deep Learning

    Neural Networks and Deep Learning This is the first course of the deep learning specialization at Co ...

  5. Laya 屏幕适配

    Laya 屏幕适配 @author ixenos 2019-03-20 21:44:52 1.最简单的方案:原比例,对照屏幕尺寸的最小比率缩放,有黑边 Laya.stage.scaleMode = S ...

  6. Git 常用命令整理(持续更新)

    #配置 git config --global user.name "Your Name" git config --global user.email "email@e ...

  7. 回顾基础知识,类,fbv,cbv

    一 类中绑定方法的传参,不需要self class Foo(object): def __init__(self,name): self.name = name def foo(self,x): se ...

  8. SpringBoot + Spring Security 基本使用及个性化登录配置详解

    Spring Security 基本介绍 这里就不对Spring Security进行过多的介绍了,具体的可以参考官方文档 我就只说下SpringSecurity核心功能: 认证(你是谁) 授权(你能 ...

  9. 还是Tomcat,关于类加载器的趣味实验

    一.前言 类加载器,其实是很复杂一个东西,想等到我完全什么都弄明白了再写出来,估计不太现实...现在只能是知道多少写多少吧. 首先,我提一个问题:在我们自己的servlet中(比如ssm中,contr ...

  10. Unity3D 异步加载 在 场景加载 中的使用

    异步加载 我们想一想玩过的一些游戏,基本都会有加载界面——因为游戏场景数据较大,所以需要加载一小段时间.那为什么一些2D游戏也会有加载界面呢?按理说2D游戏场景会很小,这样做是为了让游戏跑在低端设备上 ...