题目是判断二分图

给定一个可能不是连通的无向图,我们需要判断此图是不是一个二分图。
在一个连通的无向图内,判断二分图的方法为:

  1. 初始化所有结点都未染色,染色数组color初始化全未0
  2. 从任意一个结点开始,将其染为颜色1,并从该结点开始遍历整个图
  3. 如果我们通过u结点和v结点之间的边遍历到了v结点

有以下两种情况:

  • 如果v未被染色,那么我们将其染成于u不同的颜色,并从v继续往下遍历
  • 如果v被染色,v的颜色如果于u相同的话,则说明不是一个二分图,返回false

当遍历结束的时候,返回true
由于题目给定的无向图不保证一定连通,因此我们需要进行多次遍历,直到每一个结点都被染色或者确定答案为false之后才能返回

bool isBipartite(vector<vector<int>>& graph) {int n=graph.size();vector<int>color(n,0);for(int i=0;i<n;i++){ //需要多次遍历直到所有结点被遍历if(color[i]==0){ //从一个没有被染色的结点开始queue<int>q;q.push(i);color[i]=1; //将其染色为颜色1while(!q.empty()){int cur=q.front();int c; //记录与cur相连的结点应该染的颜色if(color[cur]==1) c=2;else if(color[cur]==2) c=1;else c=0;q.pop();for(auto& g:graph[cur]){ //遍历与cur相连的结点if(color[g]==0){ //如果未被染色q.push(g); //加入队列color[g]=c; //将其染色为c}else if(color[g]!=c) return false; //不是他应该的颜色直接返回false}}}}return true; //遍历完之后返回true
}

判断二分图【bfs】相关推荐

  1. [Leetcode][第785题][JAVA][判断二分图][BFS][DFS]

    [问题描述][中等] [解答思路] 1. DFS 深度优先遍历 时间复杂度:O(N+M) 空间复杂度:O(N) class Solution {private static final int UNC ...

  2. leetcode785. 判断二分图(dfs和bfs染色)

    给定一个无向图graph,当这个图为二分图时返回true. 如果我们能将一个图的节点集合分割成两个独立的子集A和B,并使图中的每一条边的两个节点一个来自A集合,一个来自B集合,我们就将这个图称为二分图 ...

  3. HDU - 2444——The Accomodation of Students(判断二分图,二分图最大匹配)

    题意: 题意: 有n个人,m对人相互认识: 问能否分成两个组,组内任意两个人之间不认识: 若不能,则输出No: 若能,则相互认识的两个人一间房,求最多需要几间房: 给出一些学生的认识情况,比如A和B认 ...

  4. LeetCode_二分图_中等_785. 判断二分图

    目录 1.题目 2.思路 3.代码实现(Java) 1.题目 存在一个无向图,图中有 n 个节点.其中每个节点都有一个介于 0 到 n - 1 之间的唯一编号.给你一个二维数组 graph,其中 gr ...

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

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

  6. CodeForces - 1354E Graph Coloring(dfs判断二分图+dp)

    题目链接:点击查看 题目大意:给出一个由 n 个点和 m 条边组成的无向图,要求给 n 个点赋值为 1 . 2 或 3 ,需要满足以下条件: 每个点都需要被赋值 权值为 1 的点共 n1 个 权值为 ...

  7. HDU - 2444 The Accomodation of Students(二分图判断+二分图最大匹配)

    题目链接:点击查看 题目大意:给出n个学生,他们之间有m个认识关系,但认识关系不具有传递性,比如A认识B,B认识C,A不一定认识C,现在给出认识关系,先判断是否能够将所有学生分为两个集合A和B中去,集 ...

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

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

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

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

最新文章

  1. 07/11/13 资料整理
  2. 创客常用开发板“四剑客”对比,谁最“快”?
  3. MVC Action Filters 总结
  4. 科研实习 | 约翰霍普金斯大学Alan Yuille教授招收计算机视觉暑期科研实习生
  5. hadoop使用combiner合并操作
  6. python做一个linux网卡,Linux系统Python可以选择不同网卡进行网络访问吗?
  7. html5如何进行测试,HTML5
  8. BZOJ-2768: [JLOI2010]冠军调查(超级裸的最小割)
  9. 5G NR CSI Report中的codebook/PMI
  10. 风口来了?关于电子信息工程专业的有关介绍
  11. 基于STM32F407四旋翼无人机---MS5611气压计(三)
  12. Java面试中HR面试的100个问题,你有被问到几个?正解如下
  13. VMware Workstation导出的ovf格式虚拟机 不能用VirtualBox导入
  14. 关于面试总结2-SQL学生表
  15. MyBatis简单的增删改查
  16. 研究计算机如何自动获取知识和技能的学科,在人工智能中有一个研究领域,主要研究计算机如何自动获取知识和技能,实现自我完善,这门研究分支学科叫( )...
  17. Javaweb零基础学习(壹)
  18. APISpace 动态活体检测API
  19. 使用jquery.orgchart实现栏目树的配置与展示
  20. 数据库服务器对硬件配置的要求

热门文章

  1. 【STM32】看门狗模块
  2. ironpython使用numpy_为IronPython安装numpy
  3. python统计英文文章中单词出现的次数并排序_python,_关于统计某一个 单词 在 文本中 出现的次数,python - phpStudy...
  4. w ndows 10画图,网友“羞辱”Windows 10界面设计:用画图 10分钟搞定!
  5. 罗湖区田心村旧改确认实施主体的公示,华润集团开发
  6. fullcalendar显示出勤日_FullCalendar日历插件(中文API)
  7. 圣邦微电子FAE_信号链笔试记录
  8. 分支语句(if、if-else、if-else if...else、switch)
  9. linux中c文件是否存在,关于linux:如何检查文件是否存在并在C ++中可读?
  10. 自动化脚本之-中文转拼音字母