【分解爪UVA11396-二分图染色模板】
·Rujia:“稍加推理即可解决该题……”
·英文题,述大意:
一张无向连通图,每个点连有三条边。询问是否可以将这个图分成若干个爪子,并满足条件:①每条边只能属于一个爪子②每个点属于几个爪子无所谓。输出YES/NO。
·注意一个关键条件:“每条边只能属于一个爪子”:

·注意一个逻辑顺序:
如果我们这样想,就很吃力:如何寻找一种划分方案,将原图划分为若干个爪子,如果无法划分,则输出NO。
所以换一下口味:只要这个图能够合法染色,那么必定存在一种分配情况使得这个图被分成若干个爪子。
·以此同时:题目中“每个点有三条边”使得这道题只需要对任意一个点判定一次染色就行了。
1 #include<stdio.h>
2 #include<cstring>
3 #define go(i,a,b) for(int i=a;i<=b;i++)
4 #define fo(i,a,x) for(int i=a[x],v=e[i].v;i;i=e[i].next,v=e[i].v)
5 #define mem(a,b) memset(a,b,sizeof(a))
6 using namespace std;const int N=500;
7 struct E{int v,next;}e[N*N];int n,k,head[N],color[N];
8 void ADD(int u,int v){e[k]=(E){v,head[u]};head[u]=k++;}
9 bool Dye(int u){fo(i,head,u)
10 {
11 if(color[u]==color[v])return 0;
12 if(!color[v]){color[v]=3-color[u];if(!Dye(v))return 0;}}return 1;
13 }
14 int main(){while(scanf("%d",&n)&&n)
15 {
16 k=1;mem(head,0);int u,v;
17 while(scanf("%d%d",&u,&v)&&u&&v)ADD(u,v),ADD(v,u);
18 mem(color,0);color[1]=1;puts(Dye(1)?"YES":"NO");
19 }return 0;}//Paul_Guderian
此刻我站在窗前望着外面,车辆穿梭高楼闪烁,
伴着晶莹的小雨和那歌声,我轻轻哼起这首歌。-------汪峰《生来孤独》
【分解爪UVA11396-二分图染色模板】的更多相关文章
- 二分图染色模板(P1330 封锁阳光大学)
二分图染色模板(P1330 封锁阳光大学) 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校 ...
- UVA - 11396 Claw Decomposition(二分图染色)
题目大意:给你一张无向图,每一个点的度数都是3. 你的任务是推断是否能把它分解成若干个爪(每条边仅仅能属于一个爪) 解题思路:二分图染色裸题.能够得出:爪的中心点和旁边的三个点的颜色是不一样的 #in ...
- UVA-10004-Bicoloring二分图染色
题意:给一张图,判断是不是二分图: 自己一开始不知道是二分图染色,理解的是任意三点不能互相连接 可能以后遇到这样的模型,可以往二分图想: 首先怎么判定一个图是否为二分图 从其中一个定点开始,将跟它邻接 ...
- NOIP2008双栈排序[二分图染色|栈|DP]
题目描述 Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序. 操作a 如果输入序列不为空,将第一个元素压入栈S1 操作b 如果栈S1 ...
- 洛谷P1330封锁阳光大学[二分图染色]
题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构成的无向图,N个点之间由M ...
- POJ2942 Knights of the Round Table[点双连通分量|二分图染色|补图]
Knights of the Round Table Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 12439 Acce ...
- 【POJ 2942】Knights of the Round Table(点双连通分量,二分图染色)
圆桌会议必须满足:奇数个人参与,相邻的不能是敌人(敌人关系是无向边). 求无论如何都不能参加会议的骑士个数.只需求哪些骑士是可以参加的. 我们求原图的补图:只要不是敌人的两个人就连边. 在补图的一个奇 ...
- Codeforces Round #311 (Div. 2) D - Vitaly and Cycle(二分图染色应用)
http://www.cnblogs.com/wenruo/p/4959509.html 给一个图(不一定是连通图,无重边和自环),求练成一个长度为奇数的环最小需要加几条边,和加最少边的方案数. 很容 ...
- SGU 172.eXam(二分图染色)
时间限制:0.25s 空间限制:4M 题意: 将n(n<200)个点分成两个集合,给出m(m<=30000)对不能在一个集合的点对,判断能否分成满足要求的集合,输出其中一个集合和集合的总数 ...
随机推荐
- Linux下Java通用安装方法
1.到oracle官网下下载对应jdk包,一般为%x64%.tar.gz格式. 2.建立目录: $ mkdir /usr/local/java 3.将压缩包解压至/usr/local/java 4.修 ...
- 06-移动端开发教程-fullpage框架
CSS3的新特性已经讲完了,接下来我们看一下jQuery的一个全屏jQuery全屏滚动插件fullPage.js.我们经常见到一些全屏的特绚丽页面,手指或者鼠标滑动一下就是一整屏切换,而且还有各种效果 ...
- 测试驱动开发实践3————从testList开始
[内容指引] 运行单元测试: 装配一条数据: 模拟更多数据测试列表: 测试无搜索列表: 测试标准查询: 测试高级查询. 一.运行单元测试 我们以文档分类(Category)这个领域类为例,示范如何通过 ...
- LeetCode & Q53-Maximum Subarray-Easy & 动态规划思路分析
Array DP Divide and Conquer Description: Find the contiguous subarray within an array (containing at ...
- proxymysql的安装与应用
具体的资料我们可以查看官方的文档:https://github.com/sysown/proxysql/wiki/ProxySQL-Configuration 推荐下载最新的Proxysql. 下面跟 ...
- aws - shadow 影子使用
参考链接: https://github.com/aws/aws-iot-device-sdk-java 一.设备注册 二.设备主题
- SpringCloud的EurekaClient : 客户端应用访问注册的微服务(无断路器场景)
演示客户端应用如何访问注册在EurekaServer里的微服务 一.概念和定义 采用Ribbon或Feign方式访问注册到EurekaServer中的微服务.1.Ribbon实现了客户端负载均衡,2. ...
- HTML5的常用新特性你必须知道
HTML5的常用新特性你必须知道 1 新的 声明 HTML 有多个不同的版本,只有完全明白页面中使用的确切 HTML 版本,浏览器才能完全正确地显示出 HTML 页面.这就是 的用处. 不是 HTML ...
- linux压缩相关命令
http://blog.csdn.net/mmllkkjj/article/details/6768294
- Spring 4.2.5 + Quartz 2.2.0整合
jar包使用的Maven库管理的,在这就不罗列了,注意下只有spring3.x以上的版本才支持quartz2.x的版本. 配置文件: <?xml version="1.0" ...