【数据结构与算法】用染色法判定二分图

问题描述

给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环。

请你判断这个图是否是二分图。

输入格式
第一行包含两个整数 n 和 m。

接下来 m 行,每行包含两个整数 u 和 v,表示点 u 和点 v 之间存在一条边。

输出格式
如果给定图是二分图,则输出 Yes,否则输出 No。

方法

在这里插入图片描述

实现

使用bfs实现

#include <iostream>
#include<cstring>
#include <algorithm>
#include<queue>

using namespace std;
const int N =100010;
int e[2*N],ne[2*N],h[N];
int color[N]; // 0无色,1色, -1色
int n,m,idx;

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

bool pandin(){
    for(int i = 1; i<=n; i++){
        if(color[i]==0){
            color[i] = 1;
        }
        
        queue<int> q;
        q.push(i);
    while(!q.empty()){
        int u = q.front();
        //cout<<"当前判定节点:"<<u<<endl;
        q.pop();
        for(int j = h[u]; j!=-1; j=ne[j]){
            int x = e[j];
            //cout<<"与其连接的点:"<<x<<endl;
            if(color[x]== 0){
                color[x] = -color[u];
                q.push(x);
            }
            else if(color[x] == color[u]){
                return false;
            }
            else{
                continue;
            }
        }
    }
   
    }
    return true;
    
}


int main(){
    memset(h,-1,sizeof(h));
    cin>>n>>m;
    int a,b;
    for(int i=1; i<=m; i++){
        cin>>a>>b;
        add(a,b);
        add(b,a);
    }
    if(pandin()){
        cout<<"Yes"<<endl;
    }
    else{
        cout<<"No"<<endl;
    }
    
    
    
    
    
    
}


注意:要对每个节点都保证遍历!避免落下孤立环

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/490405.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QML | JavaScript作用域和命名解析2

QML | JavaScript作用域和命名解析3.绑定的作用域对象 属性绑定是QML中最常见的JavaScript应用。属性绑定关联了一个JavaScript表达式的结果和对象的一个属性,该属性所归属的对象被称为绑定的作用域对象。在下面的代码中,Item对象就是一个绑定的作用域对象: ​ 绑定可以…

泰山派人工智能

这里我们先演示一下人工智能能干些什么吧, 请看下面演示资料 https://www.bilibili.com/v/jump-middle-edge/?spm_id_from=888.80997.embed_other.whitelist&mode=play&bvid=BV1Kh411N7b1 图像的人工智能常见的任务有如下几种情况: 分类, 目标检测,目标分割, 轨迹跟…

Matlab|基于两阶段鲁棒优化的微网电源储能容量优化配置

目录 主要内容 1.1 目标函数 1.2 约束条件 1.3 不确定变量 部分代码 结果一览 下载链接 主要内容 程序主要复现的是《考虑寿命损耗的微网电池储能容量优化配置》&#xff0c;解决微网中电源/储能容量优化配置的问题&#xff0c;即风电、光伏、储能以及燃气轮机…

上海市开展专项行动,提升车联网行业网络和数据安全防护水平

近日&#xff0c;上海市通信管理局发布了《关于开展“铸盾车联”2024年车联网网络和数据安全专项行动的通知》。通知中提到&#xff0c;此次专项行动是为了提升本市车联网行业网络和数据安全防护水平&#xff0c;筑牢车联网网络和数据安全防线&#xff0c;护航智能网联汽车产业…

#Linux系统编程(exec函数族)

&#xff08;一&#xff09;发行版&#xff1a;Ubuntu16.04.7 &#xff08;二&#xff09;记录&#xff1a; &#xff08;1&#xff09;为什么介绍exec函数族 在父进程fork()创建子进程中&#xff0c;子进程会拷贝父进程的代码&#xff0c;但是有时候不想要子进程拷贝父进程的…

c语言--实用调试技巧

1什么是bug 2调试是什么&#xff0c;有多重要&#xff1f; 3debug与release 4windows环境调试简绍 5一些调试的实例 6如何写出好的代码&#xff08;便于调试&#xff09; 7编程常见错误 1什么是bug 导致计算机出现问题就叫bug 2调试是什么&#xff0c;有多重要&#x…

【JavaEE初阶系列】——多线程案例一——单例模式 (“饿汉模式“和“懒汉模式“以及解决线程安全问题)

目录 &#x1f6a9;单例模式 &#x1f388;饿汉模式 &#x1f388;懒汉模式 ❗线程安全问题 &#x1f4dd;加锁 &#x1f4dd;执行效率提高 &#x1f4dd;指令重排序 &#x1f36d;总结 单例模式&#xff0c;非常经典的设计模式&#xff0c;也是一个重要的学科&#x…

007 日期类型相关工具类

推荐一篇文章 http://t.csdnimg.cn/72F7Jhttp://t.csdnimg.cn/72F7J

git配置密钥

要配置 Git 密钥&#xff0c;可以按照以下步骤进行操作&#xff1a; 1.生成密钥&#xff1a;首先&#xff0c;在终端或命令提示符中运行以下命令生成密钥对&#xff1a; ssh-keygen -t rsa -b 4096 -C "dengweng-pulse.net"这将生成一个 RSA 密钥对&#xff0c;其中…

clickhouse学习笔记02(小滴课堂)

ClickHouse核心基础-常见数据类型讲解 插入数据&#xff1a; decimal类型的数据&#xff0c;整数部分超了会报错&#xff0c;小数部分超了会截取。 查看表结构&#xff1a; 查询&#xff1a; 插入&#xff1a; 更新操作&#xff1a; 这个和mysql的语句不太一样。 删除语句和my…

第十二届蓝桥杯JavaB组省赛真题 - 货物摆放

解题思路&#xff1a; 暴力 优化前&#xff08;代码没有错&#xff0c;但会超时&#xff09;&#xff1a; import java.util.*;public class Main {public static void main(String[] args) {long n 2021041820210418L;long cnt 0;for (long a 1; a < n; a) {for (lon…

【Java程序设计】【C00364】基于Springboot的美发管理系统(有论文)

基于Springboot的美发管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 项目获取 &#x1f345;文末点击卡片获取源码&#x1f345; 开发环境 运行环境&#xff1a;推荐jdk1.8&#xff1b; 开发工具&#xff1a;eclipse以及idea&…

第一天工作我的

工作的第一件事情打开文件信息 开始工作了 太过分了 启动 出现了这样的错误 我这里写的有什么问题吗? computed: {getGroundCtcOptions() {var dis [];for (let i in ctcDataRef.value) {dis.push({label: ctcDataRef.value[i].name,value: ctcDataRef.value[i].id,});}retur…

iPhone 16将接入百度AI功能

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 ​百度接了个大活儿&#xff0c;将为国行iPhone 16提供AI功能。这消息一出&#xff0c;基本可以确立百度在AI界领头羊的地位了。百度这些年一直在无人驾驶、AI大模型方面发力&#xff0c;看来还是有成就的&#xf…

第十二届蓝桥杯JavaB组省赛真题 - 路径

解题思路&#xff1a; 动态规划 需要熟练掌握最小公倍数和最大公约数的计算 import java.util.*;public class Main {public static void main(String[] args) {int[] dp new int[2022];dp[1] 0;for (int i 2; i < 2021; i) {dp[i] Integer.MAX_VALUE;}for (int i 1…

【MATLAB源码-第13期】基于matlab的4ASK的误码率BER和误符号率SER理论和实际对比仿真。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 "4ASK" 是一种数字调制技术&#xff0c;代表4级振幅移移键控&#xff08;4-Level Amplitude Shift Keying&#xff09;调制。它是一种数字通信中常用的调制方式之一&#xff0c;用于将数字信号转换为模拟信号以便传…

《量子计算:揭开未来科技新篇章》

随着科技的不断发展&#xff0c;量子计算作为一项颠覆性的技术逐渐走进人们的视野&#xff0c;引发了广泛的关注和探讨。本文将围绕量子计算的技术进展、技术原理、行业应用案例、未来趋势预测以及学习路线等方向&#xff0c;深入探讨这一领域的前沿动态和未来发展趋势。 量子…

c++初阶------c++代码模块

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

档案室升级改造基建方面需要考虑哪些问题

升级和改造档案室可能需要以下材料&#xff1a; 1. 墙壁和地板材料&#xff1a;选择耐用、易于清洁的材料&#xff0c;如瓷砖、大理石、地板、木材或维护低的地毯等。 2. 墙体材料&#xff1a;可能需要新的墙壁材料来分隔出更多的空间&#xff0c;例如石膏板、砖块或玻璃隔断等…

R语言神经网路模型应用(1)

数据集heart_learning.csv与heart_test.csv是关于心脏病的数据集&#xff0c;heart_learning.csv是训练数据集&#xff0c;heart_test.csv是测试数据集。要求&#xff1a;target和target2为因变量&#xff0c;其他诸变量为自变量&#xff0c;用神经网络模型&#xff08;多层感知…