【二分图判定】hdu3478 Catch
详细的题解:http://www.docin.com/p-517243379.html
一个图是二分图 等价于 其至少有两个节点且没有奇环。
二分图判定的方法:从任意点出发进行一次dfs黑白染色,若某个点之前已经访问过(vis[v]==1)且color[v]==color[u],则存在奇环。
1 #include<cstdio> 2 #include<cstring> 3 #include<vector> 4 using namespace std; 5 #define N 100001 6 vector<int>G[N]; 7 typedef vector<int>::iterator ITER; 8 int T,n,m,S,vis[N]; 9 bool col[N]; 10 int x,y; 11 bool dfs(int U,bool now) 12 { 13 vis[U]=1; 14 for(ITER it=G[U].begin();it!=G[U].end();it++) 15 if(!vis[*it]) 16 { 17 col[*it]=(now^1); 18 if(!dfs(*it,now^1)) return 0; 19 } 20 else if(col[*it]==col[U]) return 0; 21 return 1; 22 } 23 int main() 24 { 25 scanf("%d",&T); 26 for(int q=1;q<=T;q++) 27 { 28 printf("Case %d: ",q); 29 memset(vis,0,sizeof(vis)); 30 scanf("%d%d%d",&n,&m,&S); S++; 31 for(int i=1;i<=m;i++) 32 { 33 scanf("%d%d",&x,&y); 34 G[x+1].push_back(y+1); 35 G[y+1].push_back(x+1); 36 } 37 if(!dfs(S,col[S])) puts("YES"); 38 else puts("NO"); 39 if(q==T) break; 40 for(int i=1;i<=n;i++) G[i].clear(); 41 } 42 return 0; 43 }
转载于:https://www.cnblogs.com/autsky-jadek/p/4076944.html
【二分图判定】hdu3478 Catch相关推荐
- 算法笔记--二分图判定
算法笔记 挑战程序设计p98 #include<bits/stdc++.h> using namespace std; #define ll long long #define ls rt ...
- POJ2942 Knights of the Round Table 点双连通分量 二分图判定
题目大意 有N个骑士,给出某些骑士之间的仇恨关系,每次开会时会选一些骑士开,骑士们会围坐在一个圆桌旁.一次会议能够顺利举行,要满足两个条件:1.任意相互憎恨的两个骑士不能相邻.2.开会人数为大于2的奇 ...
- POJ - 2942 Knights of the Round Table(点双缩点+二分图判定)
题目链接:点击查看 题目大意:国王要在圆桌上召开骑士会议,但是有若干对骑士之间互相憎恨.出于各种各样奇怪的原因,每次开会都必须有以下要求: 相互憎恨的两个骑士不能坐在相邻的两个位置 为了让投票表决议题 ...
- CH - 4901 关押罪犯(二分图判定+二分/并查集)
题目链接:点击查看 题目大意:一共有n个罪犯,有m对仇人,每对仇人都有一个仇恨值,如果两个仇人在一起的话,会对监狱造成等价于仇恨值的损失,现在有两个监狱,可以将罪犯们分开关押,问监狱的最小损失是多少 ...
- POJ 2942 Knights of the Round Table ★(点双连通分量+二分图判定)
题意:找出图中不可能在奇圈中的点. [分析]注意到,在不同点双连通分量中的两个点,显然是不会存在圈的.那么这样,问题就划归为在点双连通分量中去找奇圈. [重要性质]在一个点双连通分量中,只要有任意一个 ...
- uva 11396Claw Decomposotion(二分图判定)
题目大意:给出一个简单无向图.每一个点的度为3.推断是否能将此图分解成若干爪的形式,使得每条边都仅仅出如今唯一的爪中. (点能够多次出如今爪中) 这道题实质上就是问这个图是否为二分图,dfs判定 ...
- 圆桌骑士(点双联通分量+二分图判定)
[问题描述] 有n个骑士经常举行圆桌会议,商讨大事.每次圆桌会议至少有3个骑士参加,且相互憎恨的骑士不能坐在圆桌的相邻位置.如果发生意见分歧,则需要举手表决,因此参加会议的骑士数目必须是大于1的奇 ...
- 二分图判定二分图最大匹配模板
二分图定义 可以把所有的点划分成两个集合,集合内部不存在边,集合之间存在边: 01染色判定二分图 性质 一个图是二分图等价于不存在奇数环 奇数环是指点的个数是奇数的环,如下图: 有一个通俗的解释,奇数 ...
- 分组[测试点分支+二分图判定]
题意大概是给你一个序列,让你把这个序列划分成几个连续的小组,每个小组又可以分成两份,要求使所分小组数最小,且满足每个小组内部的每个小团体都不能有任意两个数相加为 整数的平方...... 1.首先一个很 ...
最新文章
- MATLAB-M文件
- 18春《c语言》在线作业3,18春福师《C++语言程序设计》在线作业二【参考答案】...
- java堆外内存6_Java堆外内存排查小结
- rocksdb学习笔记
- python写名片管理系统_Python实现名片管理系统
- 引人瞩目的 CSS 变量(CSS Variable)
- 数据结构:二叉搜索树(BST)全部基本操作
- Atitit.跨语言数据库db api兼容性 jdbc odbc ado oledb 增强方案
- 整人程序源码(VB)
- c语言编程智能交通灯系统,智能交通灯系统.doc
- (4.6.28)关于Android 64K引发的MultiDex你想知道的都在这里:一场由启动黑屏引发的惨案
- 解决idea工具下tomcat中文乱码问题
- SpringMVC上传图片报400
- 【高等代数】行列式的定义和性质
- 从零开始的UBOOT的学习8--命令体系
- Eigen教程(1)
- 分布式网络游戏百万人同时在线服务器架构实现(思想)
- 仿生学运动特性分析,带来了哪些科研成果?
- scanpy去除批次效应
- solidworks渲染材质库_Solidworks中渲染材料总汇
热门文章
- 专利交底书模板_工大知识产权周 | 不说套话,看完这篇get专利技术交底书的要点!...
- 目标检测--吴恩达深度学习记录
- Vscode Python输出窗口中文乱码的解决办法
- Verilog功能模块——降采样
- 北斗导航 | 惯性导航之基于Matlab的IMU与GPS融合(附源代码)
- 神经网络 | 玻尔兹曼机(附python源代码)
- 光流 | 基于光流的运动物体语义分割(源代码)
- 计算机组成原理第一阶段测试,计算机组成原理随堂测验1附答案
- 2017java最新面试题_2017年最新java面试题及答案
- linux内核优化哪些参数,linux内核参数优化 互联网技术圈 互联网技术圈