判断二分图【bfs】
题目是判断二分图
给定一个可能不是连通的无向图,我们需要判断此图是不是一个二分图。
在一个连通的无向图内,判断二分图的方法为:
- 初始化所有结点都未染色,染色数组color初始化全未0
- 从任意一个结点开始,将其染为颜色1,并从该结点开始遍历整个图
- 如果我们通过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】相关推荐
- [Leetcode][第785题][JAVA][判断二分图][BFS][DFS]
[问题描述][中等] [解答思路] 1. DFS 深度优先遍历 时间复杂度:O(N+M) 空间复杂度:O(N) class Solution {private static final int UNC ...
- leetcode785. 判断二分图(dfs和bfs染色)
给定一个无向图graph,当这个图为二分图时返回true. 如果我们能将一个图的节点集合分割成两个独立的子集A和B,并使图中的每一条边的两个节点一个来自A集合,一个来自B集合,我们就将这个图称为二分图 ...
- HDU - 2444——The Accomodation of Students(判断二分图,二分图最大匹配)
题意: 题意: 有n个人,m对人相互认识: 问能否分成两个组,组内任意两个人之间不认识: 若不能,则输出No: 若能,则相互认识的两个人一间房,求最多需要几间房: 给出一些学生的认识情况,比如A和B认 ...
- LeetCode_二分图_中等_785. 判断二分图
目录 1.题目 2.思路 3.代码实现(Java) 1.题目 存在一个无向图,图中有 n 个节点.其中每个节点都有一个介于 0 到 n - 1 之间的唯一编号.给你一个二维数组 graph,其中 gr ...
- hdu 5285(染色法判断二分图)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5285 解题思路:很明显的是二分图的判定,用染色法即可. 不过这题有一个坑,当n<=1和m=0时要 ...
- CodeForces - 1354E Graph Coloring(dfs判断二分图+dp)
题目链接:点击查看 题目大意:给出一个由 n 个点和 m 条边组成的无向图,要求给 n 个点赋值为 1 . 2 或 3 ,需要满足以下条件: 每个点都需要被赋值 权值为 1 的点共 n1 个 权值为 ...
- HDU - 2444 The Accomodation of Students(二分图判断+二分图最大匹配)
题目链接:点击查看 题目大意:给出n个学生,他们之间有m个认识关系,但认识关系不具有传递性,比如A认识B,B认识C,A不一定认识C,现在给出认识关系,先判断是否能够将所有学生分为两个集合A和B中去,集 ...
- 图论 —— 染色法判断二分图
二分图定义 二分图,又称二部图,英文名叫 Bipartite graph. 二分图是什么?节点由两个集合组成,且两个集合内部没有边的图.换言之,存在一种方案,将节点划分成满足以上性质的两个集合. 二分 ...
- E. Split Into Two Sets(染色法判断二分图)
Problem - 1702E - Codeforces 波利卡普最近得到了一组n(数字n-偶数)的骨牌.每块多米诺骨牌包含1到n的两个整数. 他能把所有的骨牌分成两组,使每组骨牌上的数字都不一样吗? ...
最新文章
- 07/11/13 资料整理
- 创客常用开发板“四剑客”对比,谁最“快”?
- MVC Action Filters 总结
- 科研实习 | 约翰霍普金斯大学Alan Yuille教授招收计算机视觉暑期科研实习生
- hadoop使用combiner合并操作
- python做一个linux网卡,Linux系统Python可以选择不同网卡进行网络访问吗?
- html5如何进行测试,HTML5
- BZOJ-2768: [JLOI2010]冠军调查(超级裸的最小割)
- 5G NR CSI Report中的codebook/PMI
- 风口来了?关于电子信息工程专业的有关介绍
- 基于STM32F407四旋翼无人机---MS5611气压计(三)
- Java面试中HR面试的100个问题,你有被问到几个?正解如下
- VMware Workstation导出的ovf格式虚拟机 不能用VirtualBox导入
- 关于面试总结2-SQL学生表
- MyBatis简单的增删改查
- 研究计算机如何自动获取知识和技能的学科,在人工智能中有一个研究领域,主要研究计算机如何自动获取知识和技能,实现自我完善,这门研究分支学科叫( )...
- Javaweb零基础学习(壹)
- APISpace 动态活体检测API
- 使用jquery.orgchart实现栏目树的配置与展示
- 数据库服务器对硬件配置的要求
热门文章
- 【STM32】看门狗模块
- ironpython使用numpy_为IronPython安装numpy
- python统计英文文章中单词出现的次数并排序_python,_关于统计某一个 单词 在 文本中 出现的次数,python - phpStudy...
- w ndows 10画图,网友“羞辱”Windows 10界面设计:用画图 10分钟搞定!
- 罗湖区田心村旧改确认实施主体的公示,华润集团开发
- fullcalendar显示出勤日_FullCalendar日历插件(中文API)
- 圣邦微电子FAE_信号链笔试记录
- 分支语句(if、if-else、if-else if...else、switch)
- linux中c文件是否存在,关于linux:如何检查文件是否存在并在C ++中可读?
- 自动化脚本之-中文转拼音字母