Acwing-860. 染色法判定二分图

2023-11-01

染色法

  • 将所有点分成两个集合,使得所有边只出现在集合之间,就是二分图
  • 二分图:一定不含有奇数环,可能包含长度为偶数的环, 不一定是连通图

代码思路:

  • 染色可以使用1和2区分不同颜色,用0表示未染色
  • 遍历所有点,每次将未染色的点进行dfs, 默认染成1或者2
  • 由于某个点染色成功不代表整个图就是二分图,因此只有某个点染色失败才能立刻break/return
  • 染色失败相当于存在相邻的2个点染了相同的颜色
#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;

const int N = 100010, M = 200010;

int n, m;
int e[M], ne[M], h[N], idx;
int color[N];

void add(int a, int b)
{
    e[idx] = b, ne[idx] = h[a], h[a] = idx ++;
}

bool dfs(int u, int c)
{
    color[u] = c;
    
    for (int i = h[u]; i != -1; i = ne[i])
    {
        int j = e[i];
        if (!color[j])
        {
            if (!dfs(j, 3 - c)) return false;
        }
        else if (color[j] == c) return false;
    }
    
    return true;
}

int main()
{
    scanf("%d%d", &n, &m);
    
    memset(h, -1, sizeof h);
    
    while (m --)
    {
        int a, b;
        scanf("%d%d", &a, &b);
        add(a, b), add(b, a);
    }
    
    bool flag = true;
    for (int i = 1; i <= n; ++ i)
    {
        if (!color[i])
        {
            if (!dfs(i, 1))
            {
                flag = false;
                break;
            }
        }
    }
    
    if (flag) puts("Yes");
    else puts("No");
    
    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Acwing-860. 染色法判定二分图 的相关文章

  • python executemany的使用

    使用executemany对数据进行批量插入的话 要注意一下事项 1 coding utf8 2 3 conn MySQLdb connect host localhost user root passwd 123456 db myDB 4
  • linux 中mdelay() 与msleep()的区别

    在 inux river开发中 经常要用到延迟函数 msleep mdelay udelay 虽然msleep和mdelay都有延迟的作用 但他们是有区别的 1 对于模块本身 mdelay是忙等待函数 在延迟过程中无法运行其他任务 这个延迟

随机推荐

  • Robotframework基础篇(四):分层设计测试案例

    分层思路分析 谈到 Robot Framework 分层的思想 就不得不提 关键字驱动 回到分层的思想上 在程序设计的讲究设计模式 设计模式其实就是根据需求使用抽象与封装 其实就是分层思想 把一个实现过程分成不同多层 提高的灵活性 从而达到
  • JavaScript 函数 Call的使用

    call的语法 function call obj args Call的作用是什么呢 通俗来说 我手机没电了 借朋友的手机发个短信 注意是借用 当你用完以后你 朋友手机的短信功能 对你来说就失效了 除非你再次借用 这里就有两个对象我 朋友
  • JavaScript实现简单计算器及输出三角形(初学者适用)

    某博主 咳咳本人 太无聊 昨天回想到了大学时学过js实现简单计算器和三角形输出 突然来了兴趣 写了一篇js简单的实现 很适合初学者 一 简单计算器代码如下
  • 无线信道特性分析及建模仿真

    文章目录 1 前言 2 无线信道特性的数学表达 3 无线信道特性分析 3 1 多径特性 3 1 1 时延功率谱 3 1 2 均方根时延扩展 3 1 3 信道相干带宽 3 1 4 根据多径特性对信道分类 3 2 时变特性 3 2 1 多普勒谱
  • 神经网络_第一篇 种类(2)_NARX

    NARX神经网络 1 NARX概念 2 NARX神经网络结构模型 3 NARX神经网络的特点 1 NARX概念 NARX神经网络 Based on the nonlinear autoregressive with exogeneous i
  • vue常用组件之confirm

    一些自带的方法 比如alert confirm等 往往由于浏览器不同而展现出不同的样式 为了统一 我们可以自己实现简单封装 下面代码是vue的一个组件 它简单实现了confirm功能 代码如下
  • 云服务器哪家便宜?新手看过来

    根据题主的要求 配置要求不高 便宜就行 如果满足这些条件 再加上稳定 性能好 服务好那就更完美了 那么符合这些条件的云服务商选择哪家呢 今天简单介绍下个人应用过的两家云平台 1 阿里云 目前国内最大的云计算平台 国内最早独立立项的云计算平台
  • [前缀表达式] 逆波兰表达式Python实现

    前缀表达式 逆波兰表达式Python实现 实例 1 2 3 4 5 gt 1 2 3 4 5 1 2 3 4 5 2 3 gt 123 45 2 3 代码实现 def infix to postfix expression operator
  • 无需租云服务器,Linux本地搭建web服务,并内网穿透发布公网访问

    文章目录 前言 1 本地搭建web站点 2 测试局域网访问 3 公开本地web网站 3 1 安装cpolar内网穿透 3 2 创建http隧道 指向本地80端口 3 3 配置后台服务 4 配置固定二级子域名 5 测试使用固定二级子域名访问本
  • 部署golang项目到docker

    先新建一个文件夹 该文件夹命名为项目名称 该项目文件夹下在新建3个文件夹 分别为 bin pkg src 注 bin目录存放项目编译后生成的二进制文件 在Windows平台下就是 exe文件 pkg目录 存放项目所依赖的各种包 src目录
  • Centos7离线安装nginx(简单有效成功)

    tar zxvf nginx 1 20 2 tar gz cd nginx 1 20 2 mkdir usr local nginx configure prefix usr local nginx make make install cd
  • 使用 ansible 角色在 Centos 和 Ubuntu 上编译安装 Nginx

    1 创建 Nginx 角色目录 root centos8 roles pwd data ansible roles root centos8 roles mkdir pv data ansible roles nginx tasks han
  • HashMap<Integer,ArrayList>

    HashMap
  • 使用python进行音频的实时处理,并实现不同的效果,例如:失真、过载等

    使用 Python 进行音频实时处理可以使用音频处理库如 librosa pydub soundfile scipy 等 这些库提供了读取 写入和处理音频数据的功能 举例来说 使用 librosa 实现失真效果可以这样做 import li
  • Linux内核链表移植到应用程序中及使用方法

    Linux内核链表移植到应用程序中及使用方法 目录 Linux内核链表移植到应用程序中及使用方法 使用流程 示例代码 链表移植文件 使用流程 1 创建链表 2 初始化链表 3 常规操作 增加 删除 遍历等操作 示例代码 typedef st
  • 《算法竞赛进阶指南》. 涂满它!搜索IDA*

    IDA 算法 使用连通块之外剩下的颜色个数作为估值函数 每次记录连通块周围颜色 然后改成这个颜色 dfs下去即可 include
  • MATLAB的sum函数

    1 a为向量 b sum a a表示行向量 b表示行向量求和的值 2 a为矩阵 b sum a a表示矩阵 b表示矩阵每列求和得到的行向量 3 设定sum函数的参数列表的参数dim 对矩阵每一列或者每一列求和或每一行求和 得到行向量或者列向
  • TS中的类型之数组、元组、枚举以及类型别名

    数组 数组的类型声明 类型 或者 Array lt 类型 gt string 表示字符串数组 number 表示数值数组 let a number a 1 2 3 let b Array
  • 基于51单片机控制的恒流源设计

    由51单片机作为主控制器实现的恒流源设计 部分程序 include reg52 h stc头文件 include Delay h 延时头文件 设置按键 sbit KEY ADD P3 2 加 sbit KEY DEC P3 3 减 DA s
  • Acwing-860. 染色法判定二分图

    染色法 将所有点分成两个集合 使得所有边只出现在集合之间 就是二分图 二分图 一定不含有奇数环 可能包含长度为偶数的环 不一定是连通图 代码思路 染色可以使用1和2区分不同颜色 用0表示未染色 遍历所有点 每次将未染色的点进行dfs 默认染