博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
wyh2000 and pupil
阅读量:7126 次
发布时间:2019-06-28

本文共 1880 字,大约阅读时间需要 6 分钟。

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不认识yy不认识x

保证一对(x,y)仅仅会出现一次。

T10,0n,m100000

输出描写叙述
对于每组数据,输出答案。
输入例子
28 53 45 61 25 83 55 42 34 53 42 4
输出例子
5 3Poor wyh
 
/*Author: 2486Memory: 7448 KB		Time: 592 MSLanguage: G++		Result: AcceptedVJ RunId: 4055769		Real RunId: 14058285Public:		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; }

转载地址:http://wbeel.baihongyu.com/

你可能感兴趣的文章
DE0-Nano-SoC开发板诡异的电源电路方案设计分析
查看>>
初识CSS中的sprite技巧
查看>>
迭代器 生成器
查看>>
android单元测试 activity跳转 以及 input 输入后 测试
查看>>
如何做好回归测试
查看>>
像音乐播放App一样移动背景
查看>>
GridView
查看>>
sql 2008 r2
查看>>
[NOIP2009]靶形数独 题解
查看>>
.NET分布式事务处理总结【下】 - 包含MSMQ的分布式事务处理
查看>>
Oracle数据库中心双活之道:ASM vs VPLEX (转)
查看>>
iphone ipad viewController不响应横竖屏转换相关消息的问题
查看>>
分类和预测
查看>>
Lucene全文检索引擎
查看>>
javascript——DOM之firstChild,lastChild,NextSibling,previousSibling
查看>>
express入门
查看>>
JDK1.7 和JDK1.8同时存在设置默认的JDK
查看>>
Shell学习【转】
查看>>
Android开发中一些常见的问题解决方案
查看>>
小程序基础-静态页面小程序
查看>>