今天下午的二分图染色给我开启新世界的大门啊2333333

这个题要比刚才的关押罪犯简单,只需要染一遍色就能求出答案

#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
int t,n,m,col[100005],x,y,ans;
vector<int>mmp[100005];
queue<int>qwq;
bool flag;
inline void bfs(int x)
{while(!qwq.empty())qwq.pop();qwq.push(x),col[x]=1;flag=0;//col[i]1为白,2为黑 int whi=1,bla=0;//计算有多少个黑白点 while(!qwq.empty()){int qaq=qwq.front();for(int i=0;i<mmp[qaq].size();i++){int to=mmp[qaq][i];if(col[to])//如果发现这个点之前到过
            {if(col[to]==col[qaq])//如果这个点和队首一样
                {flag=1;return;//答案不可行
                }}else{col[to]=3-col[qaq];if(col[to]==1)whi++;elsebla++;qwq.push(to);}}qwq.pop();}ans+=max(whi,bla);//ans取黑白的最大值,因为假如黑的比白的多,我们把开始变为黑的就能得到白的比黑的多。黑白可以互相转化
}
int main()
{scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);flag=0,ans=0;for(int i=1;i<=n;i++)col[i]=0,mmp[i].clear();if(n==0)//连人都没有就别管了23333
        {printf("Poor wyh\n");continue;}for(int i=1;i<=m;i++)scanf("%d%d",&x,&y),mmp[x].push_back(y),mmp[y].push_back(x);for(int i=1;i<=n;i++)//如果发现这个点没有被跑过,就进行bfs if(!col[i]){bfs(i);if(flag)//如果发现答案不可行直接退出 break;}if(flag) printf("Poor wyh\n");else{if(m==0){if(ans==1)//如果就一个人,无法满足两个集合 都有人的情况 printf("Poor wyh\n");else//没有限制条件的情况下肯定能够分到一遍只剩一个人 printf("%d %d\n",ans-1,1);}else//不为零肯定能分成ans n-ans printf("%d %d\n",ans,n-ans);}}
}

转载于:https://www.cnblogs.com/Loi-dfkdsmbd/articles/7701144.html

【hdu5285】wyh2000 and pupil相关推荐

  1. 【原创】开源Math.NET基础数学类库使用(05)C#解析Delimited Formats数据格式

                   本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...

  2. 【Python】python基础编程回顾(3)

    PYTHON编程基础回顾 面向对象基础-中 面向对象具有三大特性--继承.多态与封装: 在本部分将会讲到三大特性中的两个--继承与多态 析构方法 概述:当一个对象被删除或者被销毁时,python解释器 ...

  3. 【前端】JS复习、巩固

    参考:https://www.jianshu.com/p/b61a680d5c14 一.行为层(JavaScript) JavaScript 一门弱类型脚本语言,其源代码在发往客户端运行之前不需经过编 ...

  4. 【CentOS】利用Kubeadm部署Kubernetes (K8s)

    [CentOS]利用Kubeadm部署Kubernetes (K8s)[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体实验流程 1 系统准 ...

  5. 【Spring】框架简介

    [Spring]框架简介 Spring是什么 Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Asp ...

  6. 【C#】类——里式转换

    类是由面对对象程序设计中产生的,在面向结构的程序设计例如C语言中是没有类这个概念的!C语言中有传值调用和传址调用的两种方式!在c语言中,主方法调用方法,通过传递参数等完成一些操作,其中比较常用的的数据 ...

  7. 【C#】Out与ref是干什么的?

    关于return: 1.最后没有写 return 语句的话,表示程序正常退出 2.不需要返回值时,存在return的作用 例子 void main() {return; //return退出该程序的作 ...

  8. 【软件工程】RUP与软件开发5大模型

    软件开发的5大模型 1.瀑布模型:按照人的思维一步一步的开发下去,如果需求分析得当,每个阶段顺利,结果还不错! 2.快速原型模型:后来人们发现,自己不可能一下子就把所有的需求搞清楚,总是在开发的过程中 ...

  9. 【VB】学生信息管理系统5——数据库代码

    这次学生信息管理系统在代码的理解过程中遇到了一些问题.总结如下: 1. sql server的安装过程各个步骤的意思.在安装SQL Server的时候按照网上的步骤,我觉得这个需要学完整个数据库再返回 ...

最新文章

  1. 用jdk在cmd下运行编译java程序
  2. 权限管理(shiro框架)
  3. laravel 图片流_laravel实现上传图片的两种方式小结
  4. 海量数据处理-Trie树
  5. CG CTF WEB bypass again
  6. 进程编译连接动态库,需要将动态库改为lib***.so
  7. 在Hibernate中启用实体和查询缓存
  8. matlab如何找出最小的数据,读取数据并找出全部数据的最大值和最小值
  9. 如何在django项目中使用django-ckeditor
  10. HighCharts控制不显示“上下文菜单”
  11. 椭圆基本概念、定理及性质
  12. 什么叫嵌入式开发 嵌入式开发的要求
  13. keras中的K.gradients()函数
  14. 首席新媒体运营商学院创始人黎想:给新媒体运营的7点建议
  15. 小米应用开发者文档(标注需要注意的地方)
  16. 【探花交友】用户登录总结
  17. OLED TFT屏幕相关
  18. Kotlin contract 用法及原理
  19. woff格式字体怎么打开和编辑?
  20. abb机器人离线编程软件解密_一文看懂最新机器人离线编程软件【详细】

热门文章

  1. hibernate----N-1(一)
  2. CentOS开启与关闭防火墙
  3. 【oracle】sqlnet.ora 访问控制策略
  4. libvirt-adabddad
  5. 如何利用webmin在Linux主机中添加网站
  6. 经典算法题每日演练——第三题 猴子吃桃
  7. Hibernate的各种保存方式的区别
  8. 【剑指offer】设置在最小数目的阵列
  9. sybase中游标的使用示例
  10. 黑马vue---1-7、vue杂记