详细的题解: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相关推荐

  1. 算法笔记--二分图判定

    算法笔记 挑战程序设计p98 #include<bits/stdc++.h> using namespace std; #define ll long long #define ls rt ...

  2. POJ2942 Knights of the Round Table 点双连通分量 二分图判定

    题目大意 有N个骑士,给出某些骑士之间的仇恨关系,每次开会时会选一些骑士开,骑士们会围坐在一个圆桌旁.一次会议能够顺利举行,要满足两个条件:1.任意相互憎恨的两个骑士不能相邻.2.开会人数为大于2的奇 ...

  3. POJ - 2942 Knights of the Round Table(点双缩点+二分图判定)

    题目链接:点击查看 题目大意:国王要在圆桌上召开骑士会议,但是有若干对骑士之间互相憎恨.出于各种各样奇怪的原因,每次开会都必须有以下要求: 相互憎恨的两个骑士不能坐在相邻的两个位置 为了让投票表决议题 ...

  4. CH - 4901 关押罪犯(二分图判定+二分/并查集)

    题目链接:点击查看 题目大意:一共有n个罪犯,有m对仇人,每对仇人都有一个仇恨值,如果两个仇人在一起的话,会对监狱造成等价于仇恨值的损失,现在有两个监狱,可以将罪犯们分开关押,问监狱的最小损失是多少 ...

  5. POJ 2942 Knights of the Round Table ★(点双连通分量+二分图判定)

    题意:找出图中不可能在奇圈中的点. [分析]注意到,在不同点双连通分量中的两个点,显然是不会存在圈的.那么这样,问题就划归为在点双连通分量中去找奇圈. [重要性质]在一个点双连通分量中,只要有任意一个 ...

  6. uva 11396Claw Decomposotion(二分图判定)

     题目大意:给出一个简单无向图.每一个点的度为3.推断是否能将此图分解成若干爪的形式,使得每条边都仅仅出如今唯一的爪中. (点能够多次出如今爪中) 这道题实质上就是问这个图是否为二分图,dfs判定 ...

  7. 圆桌骑士(点双联通分量+二分图判定)

    [问题描述]   有n个骑士经常举行圆桌会议,商讨大事.每次圆桌会议至少有3个骑士参加,且相互憎恨的骑士不能坐在圆桌的相邻位置.如果发生意见分歧,则需要举手表决,因此参加会议的骑士数目必须是大于1的奇 ...

  8. 二分图判定二分图最大匹配模板

    二分图定义 可以把所有的点划分成两个集合,集合内部不存在边,集合之间存在边: 01染色判定二分图 性质 一个图是二分图等价于不存在奇数环 奇数环是指点的个数是奇数的环,如下图: 有一个通俗的解释,奇数 ...

  9. 分组[测试点分支+二分图判定]

    题意大概是给你一个序列,让你把这个序列划分成几个连续的小组,每个小组又可以分成两份,要求使所分小组数最小,且满足每个小组内部的每个小团体都不能有任意两个数相加为 整数的平方...... 1.首先一个很 ...

最新文章

  1. MATLAB-M文件
  2. 18春《c语言》在线作业3,18春福师《C++语言程序设计》在线作业二【参考答案】...
  3. java堆外内存6_Java堆外内存排查小结
  4. rocksdb学习笔记
  5. python写名片管理系统_Python实现名片管理系统
  6. 引人瞩目的 CSS 变量(CSS Variable)
  7. 数据结构:二叉搜索树(BST)全部基本操作
  8. Atitit.跨语言数据库db  api兼容性 jdbc odbc ado oledb 增强方案
  9. 整人程序源码(VB)
  10. c语言编程智能交通灯系统,智能交通灯系统.doc
  11. (4.6.28)关于Android 64K引发的MultiDex你想知道的都在这里:一场由启动黑屏引发的惨案
  12. 解决idea工具下tomcat中文乱码问题
  13. SpringMVC上传图片报400
  14. 【高等代数】行列式的定义和性质
  15. 从零开始的UBOOT的学习8--命令体系
  16. Eigen教程(1)
  17. 分布式网络游戏百万人同时在线服务器架构实现(思想)
  18. 仿生学运动特性分析,带来了哪些科研成果?
  19. scanpy去除批次效应
  20. solidworks渲染材质库_Solidworks中渲染材料总汇

热门文章

  1. 专利交底书模板_工大知识产权周 | 不说套话,看完这篇get专利技术交底书的要点!...
  2. 目标检测--吴恩达深度学习记录
  3. Vscode Python输出窗口中文乱码的解决办法
  4. Verilog功能模块——降采样
  5. 北斗导航 | 惯性导航之基于Matlab的IMU与GPS融合(附源代码)
  6. 神经网络 | 玻尔兹曼机(附python源代码)
  7. 光流 | 基于光流的运动物体语义分割(源代码)
  8. 计算机组成原理第一阶段测试,计算机组成原理随堂测验1附答案
  9. 2017java最新面试题_2017年最新java面试题及答案
  10. linux内核优化哪些参数,linux内核参数优化 互联网技术圈 互联网技术圈