Leetcode(785)——判断二分图

二分图 文章目录二分图**一. 二分图的判断二.二分图的最大匹配三. 二分图最小点覆盖和最大独立集四. 二分图的最大权匹配 二分图** 二分图又称作二部图, 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。通俗来讲,就是二分图中的每一条边的两个顶点,... 阅读详情

Leetcode(785)——判断二分图

题目

存在一个 无向图 ,图中有 n 个节点。其中每个节点都有一个介于 0 到 n - 1 之间的唯一编号。给你一个二维数组 graph ,其中 graph[u] 是一个节点数组,由节点 u 的邻接节点组成。形式上,对于 graph[u] 中的每个 v ,都存在一条位于节点 u 和节点 v 之间的无向边。该无向图同时具有以下属性:

  • 不存在自环(graph[u] 不包含 u)。
  • 不存在平行边(graph[u] 不包含重复值)。
  • 如果 v 在 graph[u] 内,那么 u 也应该在 graph[v] 内(该图是无向图)
  • 这个图可能不是连通图,也就是说两个节点 u 和 v 之间可能不存在一条连通彼此的路径。

二分图 定义:如果能将一个图的节点集合分割成两个独立的子集 A 和 B ,并使图中的每一条边的两个节点一个来自 A 集合,一个来自 B 集合,就将这个图称为 二分图 。

如果图是二分图,返回 true ;否则,返回 false 。

示例 1:

在这里插入图片描述
输入: graph = [[1,2,3],[0,2],[0,1,3],[0,2]]
输出: false
解释: 不能将节点分割成两个独立的子集,以使每条边都连通一个子集中的一个节点与另一个子集中的一个节点。

示例 2:

在这里插入图片描述
输入: graph = [[1,3],[0,2],[1,3],[0,2]]
输出: true
解释: 可以将节点分成两组: {0, 2} 和 {1, 3} 。

提示:

  • graph.length == n
  • 1 <= n <= 100
  • 0 <= graph[u].length < n
  • 0 <= graph[u][i] <= n - 1
  • graph[u] 不会包含 u
  • graph[u] 的所有值 互不相同
  • 如果 graph[u] 包含 v,那么 graph[v] 也会包含 u

题解

方法一:DFS + 染色法

思路

​​  我们使用图搜索算法从各个连通域的任一顶点开始遍历整个连通域,遍历的过程中用两种不同的颜色对顶点进行染色,相邻顶点染成相反的颜色。这个过程中倘若发现相邻的顶点被染成了相同的颜色,说明它不是二分图;反之,如果所有的连通域都染色成功,说明它是二分图。

算法的流程如下:

  1. 我们任选一个节点开始,将其染成红色,并从该节点开始对整个无向图进行遍历;
  2. 在遍历的过程中,如果我们通过节点 uuu 遍历到了节点 vvv(即 uuu 和 vvv 在图中有一条边直接相连),那么会有两种情况:
    • 如果 vvv 未被染色,那么我们将其染成与 uuu 不同的颜色,并对 vvv 直接相连的节点进行遍历;
    • 如果 vvv 被染色,并且颜色与 uuu 相同,那么说明给定的无向图不是二分图。我们可以直接退出遍历并返回 false\text{false}false 作为答案。
  3. 当遍历结束时,说明给定的无向图是二分图,返回 true\text{true}true 作为答案。

​​  我们可以使用「深度优先搜索」或「广度优先搜索」对无向图进行遍历,下文分别给出了这两种搜索对应的代码。

​​  注意:题目中给定的无向图不一定保证连通,因此我们需要进行多次遍历,直到每一个节点都被染色,或确定答案为 false\text{false}false 为止。每次遍历开始时,我们任选一个未被染色的节点,将所有与该节点直接或间接相连的节点进行染色。

代码实现

我自己的:

class Solution {
    vector<int> g_p;
public:
    bool isBipartite(vector<vector<int>>& graph) {
        if(graph.empty() || graph.size() == 1) return true;
        for(int n = 0; n < graph.size(); n++) g_p.push_back(0);
        // 染色法 lastcolor 为上一个点的染色情况————0为未染色,-1为黑色,1为白色
        for(int n = 0; n < graph.size(); n++){
            if(g_p[n] == 0) // 未被访问过
                if(!DFS(0, n, graph)) return false;
        }
        return true;
    }
    // 深度优先搜索
    bool DFS(int lc, int p, vector<vector<int>>& g){
        // lastcolor == 0 表示这是一个连通子图的起始点
        if(lc == 0){
            g_p[p] = 1;
            for(auto& it: g[p]) 
                if(!DFS(g_p[p], it, g)) return false;
        }else{
            if(g_p[p] == 0){
                g_p[p] = -lc;
                for(auto& it: g[p]) 
                    if(!DFS(g_p[p], it, g)) return false;
            }else if(g_p[p] == lc) return false;
        }
        return true;
    }
};

Leetcode 官方题解:

class Solution {
private:
    static constexpr int UNCOLORED = 0;
    static constexpr int RED = 1;
    static constexpr int GREEN = 2;
    vector<int> color;
    bool valid;

public:
    void dfs(int node, int c, const vector<vector<int>>& graph) {
        color[node] = c;
        int cNei = (c == RED ? GREEN : RED);
        for (int neighbor: graph[node]) {
            if (color[neighbor] == UNCOLORED) {
                dfs(neighbor, cNei, graph);
                if (!valid) {
                    return;
                }
            }
            else if (color[neighbor] != cNei) {
                valid = false;
                return;
            }
        }
    }

    bool isBipartite(vector<vector<int>>& graph) {
        int n = graph.size();
        valid = true;
        color.assign(n, UNCOLORED);
        for (int i = 0; i < n && valid; ++i) {
            if (color[i] == UNCOLORED) {
                dfs(i, RED, graph);
            }
        }
        return valid;
    }
};
复杂度分析

时间复杂度:O(n+m)O(n+m)O(n+m),其中 nnn 和 mmm 分别是无向图中的点数和边数。
空间复杂度:O(n)O(n)O(n),存储节点颜色的数组需要 O(n)O(n)O(n) 的空间,并且在深度优先搜索的过程中,栈的深度最大为 nnn,需要 O(n)O(n)O(n) 的空间。

方法二:BFS + 染色法

思路

​​  大致思路与方法一一致,只是遍历图的方式变为 BFS。

代码实现

我自己的:

class Solution {
    vector<int> g_p;
public:
    bool isBipartite(vector<vector<int>>& graph) {
        if(graph.empty() || graph.size() == 1) return true;
        for(int n = 0; n < graph.size(); n++) g_p.push_back(0);
        return BFS(graph);
    }
    // 广度优先搜索
    bool BFS(vector<vector<int>>& g){
        queue<int> qg;
        for(int n = 0; n < g.size(); n++){
            if(g_p[n] == 0){
                g_p[n] = 1;
                qg.push(n);
                while(!qg.empty()){
                    int i = qg.front();
                    for(auto& it: g[i]){
                        if(g_p[it] == 0){
                            g_p[it] = -g_p[i];
                            qg.push(it);
                        }else if(g_p[it] == g_p[i]) return false;
                    }
                    qg.pop();
                }
            }
        }
        return true;
    }
};

Leetcode 官方题解:

class Solution {
private:
    static constexpr int UNCOLORED = 0;
    static constexpr int RED = 1;
    static constexpr int GREEN = 2;
    vector<int> color;

public:
    bool isBipartite(vector<vector<int>>& graph) {
        int n = graph.size();
        vector<int> color(n, UNCOLORED);
        for (int i = 0; i < n; ++i) {
            if (color[i] == UNCOLORED) {
                queue<int> q;
                q.push(i);
                color[i] = RED;
                while (!q.empty()) {
                    int node = q.front();
                    int cNei = (color[node] == RED ? GREEN : RED);
                    q.pop();
                    for (int neighbor: graph[node]) {
                        if (color[neighbor] == UNCOLORED) {
                            q.push(neighbor);
                            color[neighbor] = cNei;
                        }
                        else if (color[neighbor] != cNei) {
                            return false;
                        }
                    }
                }
            }
        }
        return true;
    }
};
复杂度分析

时间复杂度:O(n+m)O(n+m)O(n+m),其中 nnn 和 mmm 分别是无向图中的点数和边数。
空间复杂度:O(n)O(n)O(n),存储节点颜色的数组需要 O(n)O(n)O(n) 的空间,并且在广度优先搜索的过程中,队列中最多有 n−1n−1n−1 个节点,需要 O(n)O(n)O(n) 的空间。

方法三:并查集

思路

​​  如果是二分图的话,那么图中每个顶点的所有邻接点都应该属于同一集合,且当前顶点的所有邻接点不与当前顶点处于同一集合。因此我们可以使用并查集来解决这个问题。
​​  首先遍历图中每个顶点,将当前顶点的所有邻接点进行合并,并判断这些邻接点中是否存在某一邻接点已经和当前顶点处于同一个集合中了,若是,则说明不是二分图。

代码实现

网友解法:

class union_set {
    vector<int> uset;
    vector<int> rank;

public:
    void make_set(int len) {
        uset.resize(len);
        rank.resize(len);
        for (int i=0; i<len; ++i) uset[i] = i;
        //cout << "make is done";
    }

    int find(int c) {
        if (c==uset[c]) return c;
        else {
            uset[c] = find(uset[c]);
            return uset[c];
        }
    }

    void un(int l, int r) {
        if (find(l) == find(r)) return ;
        if (rank[l] < rank[r]) {
            uset[find(l)] = r;
        } else {
            uset[find(r)] = l;
            if (rank[l]==rank[r]) rank[l]++;
        }
    }
};


class Solution {
public:
    bool isBipartite(vector<vector<int>>& graph) {
        int n = graph.size();
        union_set u;
        u.make_set(n);

        for (int i = 0; i < n; ++i) {
            for (int j=0; j < graph[i].size(); ++j) {
                int root = u.find(i);
                if (root == u.find(graph[i][j])) return false;
            }
            for (int j=1; j<graph[i].size(); ++j) {
                u.un(graph[i][j-1], graph[i][j]);
            }
        }

        return true;
    }
};
复杂度分析

时间复杂度:O(N+M)O(N + M)O(N+M),其中 NNN 是无向图的顶点数,MMM 是无向图的边数。
空间复杂度:O(N)O(N)O(N),其中 NNN 是无向图的顶点数,MMM 是无向图的边数。

RseQC实战指南:从安装到RNA-Seq数据质控全流程解析 本文提供了一份详尽的RseQC实战指南,涵盖从安装配置到RNA-Seq数据质控的全流程。文章重点解析了RseQC作为专业质控工具的核心价值,手把手指导如何通过Conda或pip完成安装,并深入讲解了bam_stat.py、geneBody_coverage.py等关键模块的使用方法与结果解读技巧,帮助用户有效评估RNA完整性、文库构建质量及链特异性,确保下游分析的可靠性。 阅读详情

相关推荐

告别密码烦恼:用Windows Server NPS给公司Wi-Fi和有线网加一道MAC地址白名单(附H3C交换机配置)

本文详细介绍了如何利用Windows Server NPS(网络策略服务器)与H3C交换机实现MAC地址白名单认证,为企业Wi-Fi和有线网络提供零密码安全方案。通过配置NPS服务器、网络策略及H3C交换机联调,实现无感知认证体验,降低运维负担,同时满足审计追溯需求。适用于中小企业网络管理,提升安全性与便捷性。

weixin_42535703的博客 365

判断一个图是否是二分图

判断一个图是否是二分图 二分图:其顶点可分为两组独立的U和V,使得每条边[u,v][u,v][u,v]可以连接顶点,从UUU到V,或者从V到UUU,换言之,对于每一个边[u,v][u,v][u,v]​,要么u属于U,v属于V,要么u属于V,v属于U。我们也可以说没有一条边连接同一个集合的顶点 如果可以使用两种颜色对图进行着色,使得集合中的顶点用相同的颜色着色,则二分图是可能的。请注意,可以使用两种颜色为具有偶数个顶点的环着色。 Alogrithm: 检查图是否为二分图的算法: 一种方法是使用回溯算法处

wat1r的博客 4890

现代SerDes解剖:从CTLE/DFE到PAM4与ADC+DSP架构

高速有线通信的物理层瓶颈,正从并行总线的时钟偏斜转向串行链路的信号完整性挑战。SerDes作为解决这一问题的核心技术,其内部架构远超“并转串”的朴素认知。接收端的CTLE线性均衡与DFE判决反馈均衡,配合CDR时钟恢复,共同构成对抗信道损耗与码间干扰的关键机制。随着速率迈向56G/112G,PAM4调制以电平幅度换取带宽,而ADC+DSP架构则把均衡算法搬入数字域,实现更灵活的非线性补偿。理解这些模块如何协同工作,是调试PCIe、以太网等高速链路、优化眼图余量与抖动预算的基础,也是硬件工程师从盲目调参走向系

weixin_29194817的博客 294

数据结构:二分图以及判定二分图

是一种特殊的图,它的顶点集合可以划分为两个不相交的子集,使得每条边都连接这两个子集中的一个顶点和另一个顶点。换句话说,二分图中的所有边都只能在两个不同的子集之间。染色法判定二分图虽然听起来很难,但实际上是一个很简单的算法,读完此文章,相信大家都很容易掌握。

m0_63997099的博客 5036

ISP Tuning实战指南:从基础到高级的色彩与亮度优化

本文详细介绍了ISP Tuning的基础概念与高级调优技术,包括黑电平校正(BLC)、自动白平衡(AWB)、色彩校正矩阵(CCM)和Gamma曲线调整等核心算法。通过实战案例和调试技巧,帮助工程师提升摄像头成像质量,解决高光过曝、暗部噪点等常见问题,适用于智能门铃、车载摄像头等多种场景。

weixin_30879169的博客 107

【TELEMAC V8P4】TELEMAC-2D 用户手册核心概念与应用场景速览

本文深入解析了TELEMAC-2D水动力模型的核心概念与应用。作为基于二维浅水方程的开源数值模拟工具,TELEMAC-2D广泛应用于河流动力学、洪水演进、污染物输运及泥沙运动模拟。文章结合用户手册与实战经验,详细拆解了其理论框架、关键物理过程(如湍流模型、干湿网格处理),并提供了从模型搭建、文件配置到典型场景(如工程评估、污染应急、洪水模拟)的实用指南,帮助用户快速掌握这一强大工具。

weixin_29200741的博客 161

【二分图算法】手把手教你学会:染色法(判断二分图)、匈牙利算法(二分图的最大匹配)

就是顶点集V可分割为两个互不相交的子集,并且图中每条边依附的两个顶点都分属于这两个互不相交的子集,两个子集内的顶点不相邻。(不一定是连通图)💡匹配(本质是一个边的集合!给定一个二分图S,在S的一个子图M中,M的边集{E}中的任意两条边都不依附于同一个顶点,则称M是一个匹配。💡极大匹配极大匹配是指在当前已完成的匹配下,无法再通过增加未完成匹配的边的方式来增加匹配的边数。(也就是说,再加入任意一条不在匹配集合中的边,该边肯定有一个顶点已经在集合中的边中了)💡最大匹配。

Yaoyao2024的博客 4542

DPABINet保姆级教程:零代码完成脑网络分析与图论计算

本文提供DPABINet的零代码脑网络分析全流程指南。该工具通过图形化界面集成时间序列提取、连接矩阵构建、图论指标计算及统计分析,大幅降低技术门槛。重点解析了阈值选择、二值化与小世界属性计算等关键步骤,帮助研究者快速掌握脑网络分析与图论计算,提升科研效率与可重复性。

j2k3l4的博客 667

图结构专栏——判断二分图

图结构专栏——判断二分图 一、什么是二分图 定义:如果能将一个图的节点集合分割成两个独立的子集 A 和 B ,并使图中的每一条边的两个节点一个来自 A 集合,一个来自 B 集合,就将这个图称为二分图 。 例子1: 这不是一个二分图,因为不能将节点分割成两个独立的子集,以使每条边都连通一个子集中的一个节点与另一个子集中的一个节点 例子2: 这是一个,可以将节点分成两组: {0, 2} 和 {1, 3} 二、如何判断一个图是不是二分图 对于图中的任意两个节点 u 和 v,如果它们之间有一条边直接相连,那么

lizefeng1998的博客 1933

【STK】手把手教你利用STK进行关联分析仿真01-STK/CAT模块介绍

今天主要介绍接近分析工具CAT。

weixin_44184852的博客 1104

【Python开发者必看】Windows下Python版本管理器Pyenv安装使用,轻松管理Python版本的入门与进阶指南,从此告别Python环境不兼容的噩梦

好了,关于 【Python开发者必看】Windows下Python版本管理器Pyenv安装使用,轻松管理Python版本的入门与进阶指南,从此告别Python环境不兼容的噩梦 就写到这儿了,如果还有什么疑问或遇到什么问题欢迎扫码提问,也可以给我留言哦,我会一一详细的解答的。1、手动下载对应版本到 pyenv-win\install_cache 目录(如上手动操作安装步骤,文件名需匹配,如 python-3.10.0-amd64.exe)。该指令会列出,pyenv包管理工具所支持的所有python版本,

Spring Boot-Common On With You 851

Leetcode 785. 判断二分图

Leetcode 785. 判断二分图 1、问题分析2、问题解决3、总结 1、问题分析 题目链接:https://leetcode-cn.com/problems/is-graph-bipartite/submissions/   本质上就是一个图的遍历问题,这里将节点分成两个不同的区域,然后遍历图,将节点放到不同的对应区域中,相邻的两个节点一定是放置在不同的区域中,所以如果不同的区域,相同的位置有同样的值,说明某个节点必须要放置在两个区域中,说明不能二分,找到这样的节点之后立即返回,也就是剪枝,可以提高运

珍惜 8982

R语言 Chow Test

Chow 测试用于测试不同数据集上的两个不同回归模型中的系数是否相等。 该测试通常用于计量经济学领域,使用时间序列数据来确定数据在某个时间点是否存在结构性中断。 本教程提供了如何在 R 中执行 Chow 测试的分步示例 首先,我们将创建一些假数据: #create data data <- data.frame(x = c(1, 1, 2, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 9, 10, 10, 11, 12, 12, 13,

Mrrunsen的博客 1946

785.力扣LeetCode_ 判断二分图

本文总结了两种判断二分图的算法思路:1. 并查集方法:包括邻居并查集(通过合并邻居集合隐式维护对立关系)和影子并查集(显式建立原图与影子图的映射关系)。2. 染色法方法:包括DFS染色(递归标记颜色)和BFS染色(队列辅助逐层标记)。两种思路分别从集合维护和状态传播角度解决问题,前者强调关系划分,后者关注动态验证,共同提供了判断二分图的有效方法。

2401_82472941的博客 1217

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Leetcode785. 判断二分图(C语言)

Leetcode785. 判断二分图(C语言) 数据结构-图(二分图):算法与数据结构参考 题目: 给定一个无向图graph,当这个图为二分图时返回true。 如果我们能将一个图的节点集合分割成两个独立的子集A和B,并使图中的每一条边的两个节点一个来自A集合,一个来自B集合,我们就将这个图称为二分图。 graph将会以邻接表方式给出,graph[i]表示图中与节点i相连的所有节点。每个节点都是一个...

jeanlu的博客 1421

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

力扣刷题笔记 785. 判断二分图 C#

7月16日签到题,题目如下: 给定一个无向图graph,当这个图为二分图时返回true。 如果我们能将一个图的节点集合分割成两个独立的子集A和B,并使图中的每一条边的两个节点一个来自A集合,一个来自B集合,我们就将这个图称为二分图。 graph将会以邻接表方式给出,graph[i]表示图中与节点i相连的所有节点。每个节点都是一个在0到graph.length-1之间的整数。这图中没有自环和平行边:graph[i]中不存在i,并且graph[i]中没有重复的值。 示例 1: 输入: [[1,3..

cjc52294的博客 307

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Leetcode 785.判断二分图

Leetcode 785.判断二分图

aaaghyaa的博客 261

力扣785. 判断二分图

题目要求将所有节点分成两部分,每条边的两个端点都必须在不同集合中因为图不一定联通,所以枚举所有点都做bfs(如果没联通的话)

Pisasama的博客 277

LeetCode-785. 判断二分图(附带算法详解)

LeetCode-785. 判断二分图 -.- 这题不会做,记录下大佬的题解(难度:中等) 一、题目内容 给定一个无向图graph,当这个图为二分图时返回true。 如果我们能将一个图的节点集合分割成两个独立的子集A和B,并使图中的每一条边的两个节点一个来自A集合,一个来自B集合,我们就将这个图称为二分图。 graph将会以邻接表方式给出,graph[i]表示图中与节点i相连的所有节点。每个节点都是一个在0到graph.length-1之间的整数。这图中没有自环和平行边: graph[i] 中不存在i,并且

weixin_40563850的博客 742

LeetCode 785. 判断二分图

LeetCode 785. 判断二分图 思路 染色问题,很简单,dfs对附近的点走下一个颜色,如果下一个颜色冲突返回false,本个也就直接false。 问题一般出在只对一个点进行dfs,因为是无向环图,所以可能出现子图无法被第一个点访问到的问题,所以要对 所有点进行dfs染色。 代码 class Solution { public int [] color; public int [][] graph; public boolean isBipartite(int[][] gra

qq_42499133的博客 181

leetcode_785. 判断二分图

具体实现:我们可以使用染色法 先将所有节点看作白色 表示未被访问 访问该节点是 将其染色 访问该节点的下一节点之后 将其下一节点也进行染色 但是 为了表示染色的颜色只有两个 我们可以先将第一个节点染色为颜色 0 那么他的下一节点 将会是这样子染色 color[v] = 1 - color[u];实现思路:观察题目发现 给个节点只能与另外两个节点相连 才能叫作二分图 那么我们只需要找到一个节点与其他节点相连的节点数量大于两个 那么这个图将不是二分图。

m0_63056769的博客 611

LeetCode785 判断二分图

LeetCode785 判断二分图 题目 存在一个无向图,图中有 n 个节点。其中每个节点都有一个介于 0 到 n - 1 之间的唯一编号。给你一个二维数组 graph ,其中 graph[u] 是一个节点数组,由节点 u 的邻接节点组成。形式上,对于 graph[u] 中的每个 v ,都存在一条位于节点 u 和节点 v 之间的无向边。该无向图同时具有以下属性: 不存在自环(graph[u] 不包含 u)。 不存在平行边(graph[u] 不包含重复值)。 如果 v 在 graph[u] 内,那么 u 也

lizefeng1998的博客 246

leetcode 785. 判断二分图

二分图的关键在于把握边的两边的两个结点不要在一个连通分量!!!!

weixin_47042626的博客 248

力扣785判断二分图

摘要:无向图与二分图是图论中的核心概念,二者具有包含关系但特性不同。无向图的边无方向且顶点连接双向,而二分图作为其特殊子集,要求顶点可划分为两个独立子集且边仅存在于子集间。关键区别在于二分图不含奇数长度环,可通过BFS/DFS染色法(时间复杂度O(V+E))高效检测。无向图适用于社交网络等双向关系建模,二分图则专精于任务分配等匹配问题。文中提供了C语言实现的二分图判定算法,包含邻接表构建、BFS遍历和冲突检测功能,并通过测试用例验证了其正确性。该实现兼顾时空效率(O(V)空间复杂度),适用于大规模图结构分析

2401_89332662的博客 698

Leetcode--Java--785. 判断二分图

题目描述 样例描述 思路 染色法 (DFS + 递归 / BFS ) 一个图是二分图等价于图可以被二染色等价于图中不含有奇数环 染色法的思路: 图的存储最常用是链式前向星,参考这里,本题就用二维数组存储图即可 代码 dfs + 递归思想 class Solution { int g[][]; int vis[]; public boolean isBipartite(int[][] graph) { int n = graph.length;

Sherlock的博客 1104

染色法判断二分图 | LeetCode-785. 判断二分图

定义:如果能将一个图的节点集合分割成两个独立的子集。,并使图中的每一条边的两个节点一个来自。其中每个节点都有一个介于。分别是无向图中的点数和边数。是一个节点数组,由节点。,都存在一条位于节点。集合,就将这个图称为。如果图是二分图,返回。

qq_45931691的博客 459
上一篇: 关于 C++ 中地址值打印出来为1或0的情况(主要是与 volatile* 有关)
下一篇: Leetcode(210)——课程表 II
486L
博客等级 码龄7年 20粉丝 117原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值