博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 5285 二分图黑白染色
阅读量:5990 次
发布时间:2019-06-20

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

题意:给出 n 个人,以及 m 对互不认识的关系,剩余的人都互相认识,要将所有人分成两组,组内不能有互不认识的人,要求每组至少有一人,并且第一组人数尽量多,问两组人数或不可能时单独输出

BC 48 场的B题,这两天黑白染色做的不少,要把互不认识的人分在不同的组里,其实就是看整个图是否能够形成二分图,如果不能形成二分图的话,那么说明图中一定存在奇环,那么人就不能分在两个组中而保证组内都认识。所以就是判二分图,用黑白染色,然后将染色后数量多的点分在第一组,剩余分在第二组。但是题中有坑点,首先,人数小于等于1时,本来就分不成两组来保证每组至少一人,所以需要特判,其次如果没有人互不认识,即所有区块都是单点,那么就会出现所有人被分在第一组而第二组没有人的情况,那么就要将一个人分到第二组去。

1 #pragma comment(linker,"/STACK:16777216") 2 #include
3 #include
4 5 typedef long long ll; 6 7 int head[100005],nxt[200005],point[200005],size=0; 8 bool f=0; 9 int num[2];10 int c[100005];11 12 void add(int a,int b){13 point[size]=b;14 nxt[size]=head[a];15 head[a]=size++;16 point[size]=a;17 nxt[size]=head[b];18 head[b]=size++;19 }20 21 void dfs(int a,int x){22 if(f)return;23 c[a]=x;24 num[x]++;25 for(int i=head[a];~i;i=nxt[i]){26 int b=point[i];27 if(c[b]==-1)dfs(b,!x);28 else if(c[b]==x){29 f=1;30 return;31 }32 }33 }34 35 int main(){36 int T;37 scanf("%d",&T);38 while(T--){39 memset(head,-1,sizeof(head));40 size=0;41 f=0;42 memset(c,-1,sizeof(c));43 int n,m;44 scanf("%d%d",&n,&m);45 int i;46 for(i=1;i<=m;i++){47 int a,b;48 scanf("%d%d",&a,&b);49 add(a,b);50 }51 if(n<=1){52 printf("Poor wyh\n");53 continue;54 }55 int ans1=0,ans2=0;56 for(i=1;i<=n&&(!f);i++){57 if(c[i]==-1){58 num[0]=num[1]=0;59 dfs(i,1);60 if(num[0]>num[1]){61 ans1+=num[0];62 ans2+=num[1];63 }64 else{65 ans1+=num[1];66 ans2+=num[0];67 }68 }69 }70 if(ans2==0){ans1--;ans2++;}71 if(f)printf("Poor wyh\n");72 else printf("%d %d\n",ans1,ans2);73 }74 return 0;75 }
View Code

 

转载于:https://www.cnblogs.com/cenariusxz/p/4676940.html

你可能感兴趣的文章
yii2中表单的几种写法
查看>>
MATLAB 笔记摘要
查看>>
【译】怎么样构建HTML表单
查看>>
Hello Python pickle
查看>>
“HTTPS”安全在哪里?
查看>>
多图预警丨SegmentFault D-Day 南京站回顾
查看>>
Orange - 基于OpenResty的API Gateway
查看>>
ionic2.0之typescript版的工程搭建
查看>>
PHP项目中CodeIgniter使用的一些建议
查看>>
Vim实战指南(三):高级技巧
查看>>
运维利器 RunDeck v3.0.15 发布, 服务器自动化操作
查看>>
wireshark 抓包使用
查看>>
边缘计算大热,与其协作的LoRa技术也准备好迎接物联网的爆发了? ...
查看>>
MySQL使用存储过程为数据库中全部的表增加备用字段 ...
查看>>
Spring MVC防止数据重复提交
查看>>
MySQL 全局锁、表锁以及行锁
查看>>
实时计算无线数据分析
查看>>
「镁客·请讲」翼辉信息黄晓清:国产系统需有自己的灵魂,一行一行去码并不可怕 ...
查看>>
秒杀系统架构优化思路
查看>>
最新一期Spring Boot 面试题
查看>>