图的遍历(染色法判断奇环)

传送门

思路:首先图应该为连通图,所需要加的边数即addedge=add_{edge}=addedge​=连通块数−1-1−1

然后又因为是要每次走两步,即最后要走偶数步即对于走一个奇环。因为奇数条边的环倒退一步就是偶数步。判断是否有奇环用二分图的染色法即可。

如果没有奇环则+1+1+1条边即可。

时间复杂度:O(n+m)O(n+m)O(n+m)

AC代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5;
#define mst(a) memset(a,0,sizeof a)
vector<int>e[N];
int n,m,col[N],ans,ok=1;
void dfs(int u){for(auto v:e[u]){if(!col[v]){  //染色法col[v]=-col[u];dfs(v);}else if(col[v]==col[u]) ok=0; //判断是否有奇环}
}
int main(){scanf("%d%d",&n,&m);for(int i=1,u,v;i<=m;i++){scanf("%d%d",&u,&v);e[u].push_back(v),e[v].push_back(u);}for(int i=1;i<=n;i++){if(!col[i]){ans++; //连通块数col[i]=1;dfs(i);}}printf("%d\n",ans-1+ok);return 0;
}

图的遍历(染色法判断奇环)相关推荐

  1. POJ 2942 Knights of the Round Table 【点双联通 + 二分图染色法判奇环】

    传送门 亚瑟王要在圆桌上召开骑士会议,为了不引发骑士之间的冲突,并且能够让会议的议题有令人满意的结果,每次开会前都必须对出席会议的骑士有如下要求: 1. 相互憎恨的两个骑士不能坐在直接相邻的2个位置: ...

  2. poj2942 圆桌骑士(点双连通分量+二分图染色法判奇环)

    题意:一些骑士,他们有些人之间有矛盾,现在要求选出一些骑士围成一圈,圈要满足如下条件:1.人数大于1.2.总人数为奇数.3.有仇恨的骑士不能挨着坐.问有几个骑士不能和任何人形成任何的圆圈. 分析:图论 ...

  3. 染色法判断无向图是否为二部图

    二分图 二分图又称作二部图,是图论中的一种特殊模型. 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的 ...

  4. hdu 5285(染色法判断二分图)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5285 解题思路:很明显的是二分图的判定,用染色法即可. 不过这题有一个坑,当n<=1和m=0时要 ...

  5. NYOJ1015 二部图(染色法判断二分图)

    描述 二部图又叫二分图,我们不是求它的二分图最大匹配,也不是完美匹配,也不是多重匹配,而是证明一个图是不是二部图.证明二部图可以用着色来解决,即我们可以用两种颜色去涂一个图,使的任意相连的两个顶点颜色 ...

  6. E. Split Into Two Sets(染色法判断二分图)

    Problem - 1702E - Codeforces 波利卡普最近得到了一组n(数字n-偶数)的骨牌.每块多米诺骨牌包含1到n的两个整数. 他能把所有的骨牌分成两组,使每组骨牌上的数字都不一样吗? ...

  7. 图论 —— 染色法判断二分图

    二分图定义 二分图,又称二部图,英文名叫 Bipartite graph. 二分图是什么?节点由两个集合组成,且两个集合内部没有边的图.换言之,存在一种方案,将节点划分成满足以上性质的两个集合. 二分 ...

  8. 【POJ - 2942】Knights of the Round Table(点双连通分量,二分图判断奇环奇圈)

    题干: Being a knight is a very attractive career: searching for the Holy Grail, saving damsels in dist ...

  9. 二部图(染色法判断二部图)

     二部图 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 二部图又叫二分图,我们不是求它的二分图最大匹配,也不是完美匹配,也不是多重匹配,而是证明一个图是不是二部图. ...

最新文章

  1. yii框架的下拉框多选,设置默认值等(dropDownList)
  2. BM16 删除有序链表中重复的元素-II
  3. GPU代码修改成TPU代码
  4. 算法 --- 顺序查找、二分查找的js实现
  5. 操作系统【八】文件管理
  6. 机器学习中的相似性度量(转载)
  7. vc++播放wav声音
  8. Java对接圆通电子面单下单接口
  9. 数字逻辑:时序逻辑元件——锁存器
  10. 山东理工ACM【1216】杨辉三角
  11. 读书06《简约至上》
  12. Gym安装Atari环境(Windows,Linux适用)
  13. 浅析移动DIV盒子自动测算电脑屏幕XY坐标显示
  14. DataTable 服务端模式 进行分页 排序搜索
  15. 执行款不足以清偿全部债务时应当如何抵充
  16. ui界面设计基本原则
  17. 塔米狗产权项目披露:成都国星通信有限公司13.387%股权转让
  18. ulong在C语言中的头文件,ULONG没有定义的 有关问题
  19. puppy linux u盘,Puppy Linux v4.0 下载 可安装在U盘上的操作系统
  20. (Java实现) 最大团问题 部落卫队

热门文章

  1. 4.0 ipu_soc,ipu_channel_t ,ipu_channel_params_t结构体详解
  2. 第一次建站——保姆篇
  3. 项目开发-树形层级结构中的数量统计
  4. Day12 编码与文件的简单操作方法
  5. 在牛津大学就读是怎样的体验?
  6. 扫码支付吃个煎饼,街边摊支付的背后也要有大数据运营
  7. 详解信贷三级逾期口径,你可能并没有真正看懂逾期
  8. 1985-2020年全球30米地表覆盖精细分类产品V1.0免费下载,内附链接
  9. 复星医药2020年实现营业收入人民币303亿元,同比增长6%
  10. 智慧树\知到——程序设计基础(C语言)入门篇第六章到第十章测试答案