leetcode刷题记录40-886. 可能的二分法

问题描述

给定一组 n 人(编号为 1, 2, ..., n), 我们想把每个人分进任意大小的两组。每个人都可能不喜欢其他人,那么他们不应该属于同一组。

给定整数 n 和数组 dislikes ,其中 dislikes[i] = [ai, bi] ,表示不允许将编号为 ai 和  bi的人归入同一组。当可以用这种方法将所有人分进两组时,返回 true;否则返回 false

示例

示例 1:

输入:n = 4, dislikes = [[1,2],[1,3],[2,4]]
输出:true
解释:group1 [1,4], group2 [2,3]

示例 2:

输入:n = 3, dislikes = [[1,2],[1,3],[2,3]]
输出:false

示例 3:

输入:n = 5, dislikes = [[1,2],[2,3],[3,4],[4,5],[1,5]]
输出:false

提示:

  • 1 <= n <= 2000
  • 0 <= dislikes.length <= 10^4
  • dislikes[i].length == 2
  • 1 <= dislikes[i][j] <= n
  • ai < bi
  • dislikes 中每一组都 不同

问题分析:

二分图问题,从我学到的知识,应该主动将其理解成双色问题。就是用两种颜色来对图上色,如果最后能形成二分图,则满足题目要求。

代码如下:

class Solution {
public:bool possibleBipartition(int n, vector<vector<int>>& dislikes) {//    满足二分图的标志bool ok = true;//    对应节点的颜色,false和true代表两种颜色vector<bool> color(n + 1);//    是否访问过,也就是上过色vector<bool> visited(n + 1);//  邻接表建双向图        vector<vector<int>> G(n + 1, vector<int>());for(int i = 0; i < dislikes.size(); ++i){G[dislikes[i][0]].push_back(dislikes[i][1]);G[dislikes[i][1]].push_back(dislikes[i][0]);}//    dfs遍历上色function<void(int)> traverse = [&](int v){if(!ok) return;visited[v] = true;for(int w : G[v]){//    没有上过色,上跟相邻节点不一样的颜色if(!visited[w]){color[w] = !color[v];traverse(w);}//    上过色了,如果颜色跟相邻节点颜色一样不满足二分图else{if(color[w] == color[v]){ok = false;return;}}}};for(int i = 1; i <= n; ++i){if(!visited[i]){traverse(i);}}return ok;}
};

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

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

相关文章

32T存储删除视频的恢复方法

由于存储技术的发展和普及目前很多行业都开始使用小型存储&#xff0c;NAS可以通过网络进行数据上传和读取&#xff0c;使用极为方便。但是由于NAS设备容量较大且碎片较多&#xff0c;所以此类设备删除或者格式后恢复难度是比较大的&#xff0c;下边我们来分享下32T存储的恢复方…

opencv安装笔记 各种平台

目录 python安装opencv-python c 麒麟arm系统安装和用法 python安装opencv-python pypi上搜索 Search results PyPI 现在安装是一个版本&#xff0c;大于3.6都可以安装 c 麒麟arm系统安装和用法 参考&#xff1a; ffmpeg rknn麒麟系统 安装 opencv_ffmpeg4 解码示例-CSDN…

【Gitlab】访问默认PostgreSQL数据库

本地访问PostgreSQL gitlab有可以直接访问内部PostgreSQL的命令 sudo gitlab-rails dbconsole # 或者 sudo gitlab-psql -d gitlabhq_production效果截图 常用SQL # 查看用户状态 select id,name,email,state,last_sign_in_at,updated_at,last_credential_check_at,last_act…

SqlSugar使用DbFirst对象根据数据库表结构创建实体类-C#

本文所述开发环境&#xff1a;.C#、NET8、Visual Studio2022 1. 在项目中安装SqlSugar 在Visual Studio2022中新建一个 C# 的控制台应用程序&#xff0c;框架选择 .Net8。新建后如下图所示&#xff1a; 然后打开NuGet程序包管理器 搜索 SqlSugarCore 并安装 安装后在解决方案…

音乐界的ChatGPT!Suno V3震撼发布,AI创作的新纪元开启!

AI音乐革命的背景与意义 在数字化的浪潮中&#xff0c;音乐产业正经历着前所未有的变革。随着人工智能技术的不断进步&#xff0c;AI不仅改变了我们消费音乐的方式&#xff0c;更开始重塑音乐的创作过程。Suno V3&#xff0c;这个由Suno AI公司推出的音乐生成模型&#xff0c;…

Vue前端服务是什么:深入解析与实际应用

Vue前端服务是什么&#xff1a;深入解析与实际应用 在现今的互联网开发领域&#xff0c;前端技术日新月异&#xff0c;Vue.js作为其中的佼佼者&#xff0c;其前端服务更是成为了众多开发者关注的焦点。那么&#xff0c;Vue前端服务究竟是什么&#xff1f;它有哪些核心要素和实…

【等保资料】等级保护定级指南及网络安全解读(ppt原件)

新版网络安全等级保护定级指南网络安全等级保护工作的作用对象&#xff0c;主要包括基础信息网络、工业控制系统、云计算平台、物联网、使用移动互联技术的网络和大数据等。 软件全套精华资料包清单部分文件列表&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&#xf…

模拟面试题卷二

1. 什么是JavaEE框架&#xff0c;你能列举一些常用的JavaEE框架吗&#xff1f; 答&#xff1a;JavaEE框架是一套用于开发企业级应用的技术规范和工具集合。常用的JavaEE框架有Spring、Hibernate、Struts、JSF等。 2. 请解释一下面向对象技术和设计原则是什么&#xff0c;你能…

VR编程零基础好学吗?深入解析四个维度、五大要素、六大技巧与七大挑战

VR编程零基础好学吗&#xff1f;深入解析四个维度、五大要素、六大技巧与七大挑战 在科技飞速发展的今天&#xff0c;虚拟现实&#xff08;VR&#xff09;技术已逐渐渗透到我们生活的方方面面。对于许多零基础的学习者来说&#xff0c;VR编程是否好学成为了他们心中的疑问。本…

Linux网络-HttpServer的实现

文章目录 前言一、请求报文的解析URL的解析 二、响应报文的发送Content-LenthConten-TypeCookie和Set-CookieCookie的风险 三、尝试发送一个HTML网页404网页Location 重定向 四、浏览器的多次请求行为总结 前言 之前我们简单理解了一下Http协议&#xff0c;本章我们将在LInux下…

WPF视频学习-简单应用篇图书馆程序(一)

1.登录界面和主界面跳转 先把登录界面分为三行《Grid》 先添加两行&#xff1a; <Grid><!--//分三行&#xff0c;行排列--><Grid.RowDefinitions><RowDefinition Height"auto"/><RowDefinition Height"auto"/><RowDef…

Spring Boot集成antlr实现词法和语法分析

1.什么是antlr&#xff1f; Antlr4 是一款强大的语法生成器工具&#xff0c;可用于读取、处理、执行和翻译结构化的文本或二进制文件。基本上是当前 Java 语言中使用最为广泛的语法生成器工具。Twitter搜索使用ANTLR进行语法分析&#xff0c;每天处理超过20亿次查询&#xff1…

原子性,一致性,隔离性,持久性

原子性&#xff08;Atomicity&#xff09;&#xff1a;一个事务中的所有操作&#xff0c;要么全部完成&#xff0c;要么全部不完成&#xff0c;不会结束在中间某个环节&#xff0c;而且事务在执行过程中发生错误&#xff0c;会被回滚到事务开始前的状态&#xff0c;就像这个事务…

【区分vue2和vue3下的element UI Form 表单组件,分别详细介绍属性,事件,方法如何使用,并举例】

在Vue 2中&#xff0c;我们通常使用Element UI的表单组件&#xff0c;而在Vue 3中&#xff0c;由于Element UI本身并未直接支持Vue 3&#xff0c;我们通常会使用Element Plus作为替代&#xff0c;它是Element UI的Vue 3版本。下面我将分别介绍Vue 2下Element UI Form和Vue 3下E…

【第四篇】SpringSecurity的HttpSecurity详解

SpringSecurity的XML文件配置 在配置文件中通过 security:http 等标签来定义了认证需要的相关信息 SpringSecurity的HttpSecurity配置 在SpringBoot项目中,脱离了xml配置文件的方式,在SpringSecurity中提供了HttpSecurity等工具类,这里HttpSecurity就等同于在配置文件中定…

Google Test简介

1. 引言 在软件开发过程中&#xff0c;测试是保证代码质量和可靠性的关键环节。Google Test&#xff08;gtest&#xff09;是一个由Google开发的C测试框架&#xff0c;它提供了一套丰富的测试功能&#xff0c;帮助开发者编写和维护高质量的代码。 2. Google Test 基础 2.1 G…

2024年护网行动全国各地面试题汇总(4)作者:————LJS

面试过程及回答 自我介绍这里就如实回答的工作经历&#xff0c;参与的项目&#xff0c;尽量简短的把你参与的项目和成果说出来就行 使用过哪些设备&#xff0c;出现误报怎么办 天眼、EDR、全流量告警、态势感知、APT、蜜罐设备先去查看设备的完整流量日志等信息确认是否为误报&…

PS的抠图算法原理剖析 2

记得还有个这种抠图方式 我们尝试理解一下 第一步&#xff0c;人工选取点位&#xff0c;然后其实构造了一个凸多边形&#xff0c;这一步还行&#xff0c;中间有洞就挖洞&#xff0c;类似earcut那种东西 第二步&#xff0c;2个点中间的连线部分&#xff0c;怎么包裹到轮廓的&a…

单调队列——Acwing.154滑动窗口

单调队列 定义 单调队列是一个限制只能队尾插入&#xff0c;但是可以两端删除的双端队列。单调队列存储的元素值&#xff0c;是从队首到队尾单调递增或单调递减的。 运用情况 滑动窗口最大值&#xff1a;给定一个整数数组和一个窗口大小&#xff0c;计算窗口内的最大值。任…

idea 新建一个 JSP(JavaServer Pages)项目

环境设置&#xff1a; 确保你的开发环境中已经安装了 Java 开发工具包&#xff08;JDK&#xff09;和一个 Java Web 开发的集成开发环境&#xff08;IDE&#xff09;&#xff0c;比如 Eclipse、IntelliJ IDEA 或者 NetBeans。你还需要一个 Web 服务器&#xff0c;比如 Apache T…