Divide Groups(分组)(二分图染色)
题目链接
题目大意是说输入数字n
然后告诉你第i个人都认识谁?
让你把这些人分成两堆,使这每个堆里的人都互相认识。
做法:把不是互相认识的人建立一条边,则构建二分图,两堆的人肯定都互相认识,也就是说,互相认识的两个人肯定不相连。
——代码
1 #include <cstdio> 2 #include <cstring> 3 4 using namespace std; 5 6 int n, cnt; 7 int head[200001], to[200001], next[200001], color[101]; 8 bool know[101][101]; 9 10 void add(int x, int y) 11 { 12 to[cnt] = y; 13 next[cnt] = head[x]; 14 head[x] = cnt++; 15 } 16 //把点染成1或-1 17 bool dfs(int u, int c) 18 { 19 int i, v; 20 color[u] = c; 21 for(i = head[u]; i != - 1; i = next[i]) 22 { 23 v = to[i]; 24 if(color[v] == c) return 0; 25 if(color[v] == 0 && !dfs(v, -c)) return 0; 26 } 27 return 1; 28 } 29 30 bool solve() 31 { 32 int i; 33 for(i = 1; i <= n; i++) 34 if(color[i] == 0 && !dfs(i, 1)) 35 return 0; 36 return 1; 37 } 38 39 int main() 40 { 41 int i, j, x; 42 while(~scanf("%d", &n)) 43 { 44 memset(know, 0, sizeof(know)); 45 memset(color, 0, sizeof(color)); 46 for(i = 1; i <= n; i++) 47 while(scanf("%d", &x) && x) 48 know[i][x] = 1; 49 memset(head, -1, sizeof(head)); 50 for(i = 1; i <= n; i++) 51 for(j = i + 1; j <= n; j++) 52 if(!know[i][j] || !know[j][i]) 53 { 54 add(i, j); 55 add(j, i); 56 } 57 if(solve()) printf("YES\n"); 58 else printf("NO\n"); 59 } 60 return 0; 61 }
View Code
转载于:https://www.cnblogs.com/zhenghaotian/p/6700893.html
Divide Groups(分组)(二分图染色)相关推荐
- Relation(NOIP模拟赛)(二分图染色)
原题: Description 有n个人,编号为1àn,告诉你那些人之间是不友好的.现在,让你将这n个人分成两组,使得每一组之内的人是互相友好的,如果可以分成两组,则输出如何分组的,如果不可以分成两组 ...
- P1155 双栈排序(二分图染色)
P1155 双栈排序(二分图染色) 题目描述 Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序. 操作a 如果输入序列不为空,将第一 ...
- LOJ P1155 双栈排序 二分图染色 图论
https://www.luogu.org/problem/show?pid=P1155 题解: https://www.byvoid.com/zhs/blog/noip2008-twostack 开 ...
- 【POJ 2942】Knights of the Round Table(点双连通分量,二分图染色)
圆桌会议必须满足:奇数个人参与,相邻的不能是敌人(敌人关系是无向边). 求无论如何都不能参加会议的骑士个数.只需求哪些骑士是可以参加的. 我们求原图的补图:只要不是敌人的两个人就连边. 在补图的一个奇 ...
- uva 11080(二分图染色)
题意:一个国王要派若干士兵看守王国.王国是一张无向图,然后士兵只能站在点上.每个士兵的看守范围是临近的点与边,士兵看管的的边不能重复.问最少用多少个士兵能使每个点和边都有人看守. 思路:这道题可以抽象 ...
- Codeforces Round #742 (Div. 2) F. One-Four Overload 构造 + 二分图染色
传送门 文章目录 题意: 思路: 题意: 给你一个n∗mn*mn∗m的矩形,包含...和XXX,你有两种颜色,你需要给...染色使得每个XXX上下左右相邻的...其两种颜色个数相同,输出一种合法方案. ...
- 【Hitachi2020C】ThREE【构造】【二分图染色】
传送门 题意:给一棵nnn个结点的树,构造一个nnn阶排列ppp,使得所有距离为333的点对(i,j)(i,j)(i,j)满足pi+pjp_i+p_jpi+pj和pipjp_ip_jpipj至 ...
- AT2675 [AGC018F] Two Trees (构造+二分图染色+并查集)
description 戳我看题目 solution 正解说是欧拉回路,但是于私而言非常难懂,如果有兴趣可以看香香mm的博客 定义一个点如果有偶数个儿子,就为奇点:如果有奇数个儿子,就为偶点 对于一个 ...
- [NOIP2010]关押罪犯(二分+二分图染色)
传送门 大意:我们把图分为两部分,使得两部分中的内部边的最大权值最小. 思路:哎,拿到题的时候想了二分图染色,发现不好做,但我没有想到二分,只好最后去骗了一个30分.正确的思路是:首先我们要 去二分最 ...
- [NOIp2008] 双栈排序 (二分图染色 + 贪心)
题意 给你一个长为 \(n\) 的序列 \(p\) ,问是否能够通过对于两个栈进行 push, pop(print) 操作使得最后输出序列单调递增(即为 \(1 \cdots n\) ),如果无解输出 ...
最新文章
- 企业分布式微服务云SpringCloud SpringBoot mybatis (九)服务链路追踪(Spring Cloud Sleuth)...
- java grizzly_java grizzly实现http服务器
- 目标代码文件、可执行文件和库
- 【转】Photoshop网站设计:DesignStudio
- 【iCore4 双核心板_ARM】例程二十:LWIP_TCP_CLIENT实验——以太网数据传输
- Qt图形界面编程入门(6)
- jsp示例-response页面重定向
- php数据库显示+ajax,如何使用PHP和AJAX显示MySQL数据库
- php mysql单引号 双引号_php单引号、双引号与数据库
- 包分类算法最坏情况下性能比较
- 办公自动化:PDF文件合并器,将多个PDF文件进行合并...
- linux 播放wav文件,Java音频无法在Linux中播放wav文件
- 是德科技34901A支持的量程
- 真正从零开始,TensorFlow详细安装入门图文教程!(linux)
- 计算机网络学习07(DNS域名系统详解)
- 文库网站的文件转换源码分享
- 测试开发面试题目(三)——测试用例、安卓苹果系统区别、小程序与app的区别
- POJ3621 Sightseeing Cows 分数规划 SPFA求最小环
- Pytorch 构建简单Neural Networks
- fx3g485通讯模块_三菱FX3U利用 FX3U-M485BD通讯模块与 MODBUS 设备通讯
热门文章
- macOS Big Sur系统Parallels Desktop无法启动的解决办法
- MacOS如何设置不使用时退出登录用户账号
- Default Folder X几个小技巧分享
- GitLab 9提供了子群组、部署面板和集成监控
- HDU2504 又见GCD
- C#程序员开发WinForm必须知道的 Window 消息大全(转)
- Android开发中如何加载API源码帮助开发
- 一个网站的诞生- MagicDict未来予想図1 [水平分割数据表的构想]
- 昨天,JetBrains 推出“下一代 IDE”,对标VS Code?快看看有哪些值得期待的功能!...
- 各位,请慎用 subList!原来这么多坑!!