AcWing 860:染色法判定二分图 ← 并查集

news/2025/11/25 22:43:05/文章来源:https://www.cnblogs.com/triwa/p/19270322

【题目来源】
https://www.acwing.com/problem/content/862/

【题目描述】
给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环。
请你判断这个图是否是二分图。

【输入格式】
第一行包含两个整数 n 和 m。
接下来 m 行,每行包含两个整数 u 和 v,表示点 u 和点 v 之间存在一条边。​​​​​​​

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

【输入样例】
4 4
1 3
1 4
2 3
2 4​​​​​​​

【输出样例】
Yes

【数据范围】
1≤n,m≤10^5​​​​​​​

【算法分析】
● 二分图的基本性质‌
(1)二分图要求所有边连接的两个节点必须属于不同的集合
(2)与同一节点相邻的所有节点必须属于同一集合(即二分图的另一部分)。​​​​​​​
● 基于并查集实现的算法核心步骤详解‌
对于每个节点 u 遍历其所有邻居 j:
(1)冲突检测‌:如果 u 和 j 已在同一集合,即 find(u)==find(j)。说明存在奇数环,不是二分图。
(2)邻居合并‌:将 u 的所有邻居合并到同一集合,即 pre[find(e[h[u]])]=find(j)。确保它们都在二分图的另一侧。
基于并查集算法的优势在于避免了递归深度问题,适合处理大规模图,且代码简洁高效。整体复杂度 O(n+m)。

【算法代码】

#include <bits/stdc++.h>
using namespace std;const int N=1e5+5;
int pre[N];
int e[N<<1],ne[N<<1],h[N],idx;void add(int a,int b) {e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}int find(int x) {if(x!=pre[x]) pre[x]=find(pre[x]);return pre[x];
}int main() {int n,m;cin>>n>>m;memset(h,-1,sizeof h);for(int i=1; i<=n; i++) pre[i]=i;while(m--) {int a,b;cin>>a>>b;add(a,b),add(b,a);}for(int u=1; u<=n; u++) {for(int i=h[u]; i!=-1; i=ne[i]) {int j=e[i];if(find(j)==find(u)) {cout<<"No\n";return 0;}pre[find(e[h[u]])]=find(j);}}cout<<"Yes\n";return 0;
}/*
in:
4 4
1 3
1 4
2 3
2 4out:
Yes
*/





【参考文献】
https://www.acwing.com/solution/content/175783/
https://www.acwing.com/solution/content/128098/
https://www.acwing.com/solution/content/105874/
https://www.acwing.com/solution/content/246924/

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

回调函数20251125

1.回调函数:将函数作为指针传参给其他函数使用,实现解耦作用,将各个功能分开。举例,不含参数的回调函数:#include"stdio.h" int Callback() { printf("Hello, this is Callback "); re…

类模板的实现

pragma once include using namespace std; template class Myvector { friend ostream& operator<< (ostream& out, const Myvector & othervectr); //用有元函数重载输出运算符 ,注意必须要加…

rime(小狼毫)+雾凇+皮肤+万象大模型+个人词库补充

rime(小狼毫)+雾凇+皮肤+万象大模型+个人词库补充 在使用rime一段时间后,以下是我的配置心得 很多配置都基于ymal文夹,可以先去稍微了解一些yaml格式,不符合yaml格式的修改是不会生效的 (简单介绍 冒号后面一定要有…

2025年中国前五大轮胎品牌:专业测评与选购指南

2025年中国前五大轮胎品牌:专业测评与选购指南在当前产业转型与消费升级交汇的关键节点,“中国前五大轮胎品牌”已成为资本市场、主机厂供应链与广大消费者研判行业走势与品质选择的核心议题。为给行业及消费者提供基…

lru_cache装饰器的缓存清除机制原理

lru_cache 装饰器的缓存清除机制核心围绕 LRU(Least Recently Used,最近最少使用)算法 展开,仅在特定条件下触发清除,且分为「被动淘汰」「主动清除」「隐式清除」三类场景。以下是详细拆解: 一、核心:LRU 淘汰…

2025年中国前十大轮胎品牌:最新官方榜单深度解析

2025年中国前十大轮胎品牌:最新官方榜单深度解析在当前汽车产业加速重构与消费升级并行的新周期,“中国前十大轮胎品牌”已成为资本市场、主机厂供应链与广大消费者研判行业走向的核心坐标。为给行业及消费者提供基于…

网格图分治模型

若网格图面积为 \(S\),取短边分治,令分治层的复杂度和短边相关(一般是从短边上每个点出发对整个网格图 DP/搜索 之类的)。 因为短边长度 \(O(\sqrt S)\)(一般)一层复杂度是 \(O(S\sqrt S)\),总复杂度 \(T(S)=2T…

Python内置的lru_cache装饰器实现缓存教程

functools.lru_cache 是 Python 内置的函数缓存装饰器,基于「最近最少使用(LRU)」策略管理缓存,能自动缓存函数的调用结果,避免重复执行高耗时函数(如复杂计算、数据库查询)。以下是它的完整使用指南,包含基础…

2025年轮胎品牌推荐:权威TOP10全球品牌综合排名

2025年轮胎品牌推荐:权威TOP10全球品牌综合排名在当前汽车消费加速升级与新能源浪潮席卷的时代背景下,“轮胎品牌推荐”已成为广大车主、整车厂商及资本市场研判赛道格局的核心议题。面对琳琅满目的品牌阵列与繁杂的…

详细介绍:Git分支合并实战指南:从feature到master,一文搞定全流程!

详细介绍:Git分支合并实战指南:从feature到master,一文搞定全流程!pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &…

北京墙体彩绘公司推荐香鲸艺术坊,行业排名遥遥领先!

墙体彩绘作为空间美学升级的核心方式,在北京商业场景引流、家装个性定制、政企文化建设等领域需求持续攀升。本文基于市场口碑调研、服务案例落地、环保资质审核、售后保障能力四大核心维度,整理出北京墙体彩绘行业综…

虚拟科学峰会推动技术交流创新

文章探讨了疫情期间科学会议向虚拟形式转变的趋势,重点分析了某中心消费者科学峰会的线上举办经验,涉及机器学习、优化算法等技术领域,并讨论了虚拟会议对科研协作模式带来的深远影响。虚拟科学会议:技术驱动的新交…

java---gradle配置国内镜像

在进行java开发项目的时候,相比maven来说,gradle更好用一些。但是由于服务器在国外,下载资源就很慢,超时还会报异常。 方法一:使用本地Gradle打开腾讯云Gradle镜像页面:https://mirrors.cloud.tencent.com/gradl…

2025年11月南京装修公司综合实力排行榜(品牌智鉴榜推荐)

品牌智鉴榜评测,2025年11月,品牌智鉴榜联合第三方权威测评机构,基于设计能力、施工品质、售后响应、价格透明度等12项核心指标,完成对全市60余家正规装修企业的综合测评,发布《2025年11月南京装修公司综合实力排行…

揭开Claude Opus 4.5神秘面纱

揭开Claude Opus 4.5神秘面纱一位对 AI 充满好奇的学习者——揭开 Claude Opus 4.5 的神秘面纱,清晰展示它在软件工程、安全性和多语言处理等领域取得的革命性进步。1. 软件工程领域的“超强大脑”无人能及的工程能力…

Image图片组件基础加载与属性设置

# Image图片组件基础加载与属性设置 ## 前言 在HarmonyOS应用开发中,Image组件是展示图片内容的核心组件。本文将全面讲解Image组件的各种使用方法和属性设置,帮助开发者快速掌握图片显示的相关技能。 **官方参考资料…

2025年新能源汽车轮胎推荐:独家负载与静音测评报告

2025年新能源汽车轮胎推荐:独家负载与静音测评报告在新能源汽车渗透率持续攀升的背景下,如何解决用户在“新能源汽车轮胎推荐”上的选择难题,已成为关乎每一位车主出行品质的核心议题。相较于传统燃油车,新能源车因…

11月25日日记

1.今天上午工程实训,下午英语视听说 2.明天上马哲 3.@RequestParam 和 @RequestBody 的使用场景区别?JSON 数据如何正确接收?

CF370A-Rook, Bishop and King

CF370A-Rook, Bishop and King 题目大意 国际象棋棋盘上有两个位置,现在问一个车,象和王,从一个位置走到另一个位置的最少移动次数。 题解 对于所有,如果两个点重合,则都为 \(0\) 。 对于车,如果同行同列则为 \(…

实用指南:基于“开源AI智能名片链动2+1模式S2B2C商城小程序”的会员制培养策略研究

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …