牛客题解 | 二分图判定_1

news/2025/3/3 18:37:50/文章来源:https://www.cnblogs.com/wc529065/p/18748989

题目

题目链接

题解

题目难度:中等难度
知识点:图、邻接矩阵、DFS

DFS方法思路:

步骤一:构造邻接邻接矩阵G[N]

示例一点连接情况的输入:
1 2
2 3
3 4
4 1
4 5
5 2
其G[N]为:
图片说明

步骤二:用color[N]表示点的着色情况,例如点2,color[2]=0表示点2未着色,color[2]=1表示点2上黑色,color[2]=-1表示点2上白色。

步骤三:采用DFS方法给点进行上色并判断是否发生冲突。

DFS方法:bool DFS(int u, int c),u表示着色点,c为该点的颜色,color[u] = c其含义是点u为c色。

A.通过G[u].size(),找到有几个点与U点相连接,通过G[u][i]取出连接点v。

B.依次判断其连接点v的着色情况:

aa..如果color[v]=c,表示u和其连接点着色冲突,因此直接返回false。

bb.如果连接点未着色即color[v]=0,那么我们将其颜色设置未-color,并且通过DFS(v, -c)判断v点与其邻接点是否冲突。如果DFS(v, -c)的返回值为false,那么存在冲突,因此DFS(u, c)直接返回false;如果不冲突,接着判断u的下一个邻接点。

cc.如果color[v]=-c,表示其邻接点已经着色,并且没有发生冲突,直接判断下一个邻接点。

C.当判断完所有邻接点(在循环过程中没有return),那么表示u与所有的邻接点未发生冲突,即return true。

步骤四:如果该图为连通图,那么我们只需要一次DFS即可判断是否可以着色。但是该题目中说明了此图可能不连通,所以在主函数中需要添加一层循环,遍历所有点。首先判断该点是否已经着色,若未着色从该点进行新一轮的DFS。

#include <iostream>
#include<vector>
#define N 100007
using namespace std;
int n,m;
vector<int> G[N];
int color[N];bool DFS(int u, int c){color[u] = c;for(int i=0;i<g[u].size();i++){ int v="G[u][i];" if(color[v]="=0" return false; && !dfs(v, -c)) } true; main(){ cin>&gt;n&gt;&gt;m;for(int i=0;i<m;i++){ int u,v; cin>&gt;u&gt;&gt;v;G[u].push_back(v);G[v].push_back(u);}bool flag = true;for(int i=1;i&lt;=n;i++){if(color[i]==0 &amp;&amp; !DFS(i,1)){flag = false;break;}}cout&lt;&lt;(flag?"Yes":"No")&lt;</m;i++){></g[u].size();i++){></int></vector></iostream>

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

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

相关文章

牛客题解 | 买房

牛客题库题解题目 题目链接 题解: 难度:二星 考察点: 思维,数形结合 题解:数形结合 显然如果把\(k\)个连续排在一起,则一个满足条件的都不存在,很显然最小值为\(0\),接下来难点变成了求最大值。最大值的排列情况如下图所示:红色表示住户,黄色表示空地。显然上图所示这…

PXE导致bootargs未生效-stm32mp157 uboot

PXE导致bootargs未生效-stm32mp157 uboot 看过我文章的应该知道上次遇到了一个问题stm32mp157c-100ask-512d-v1_extlinux.conf 这个extlinux的配置文件内容修改了我的bootargs导致我自己设定的内核参数并未成功生效 也就是我的自定义参数被覆盖了 经过一番查找,发现原因在STM3…

【硬件测试】基于FPGA的1024QAM基带通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR

1.算法仿真效果 本文是之前写的文章:《基于FPGA的1024QAM基带通信系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR》的硬件测试版本。在系统在仿真版本基础上增加了ila在线数据采集模块,vio在线SNR设置模块,数据源模块。硬件ila测试结果如下:(完整代码运行…

Codes 项目管理创新之以众不同的缺陷管理工作流配置方式,专为懒人打造,弹指间完成配置

Codes 是国内首款重新定义 SaaS 模式的开源项目管理平台,支持云端认证、本地部署、全部功能开放,并且对 30 人以下团队免费.... 肯定会有人说,不就缺陷管理嘛!几个状态完事,爱咋整就咋整,没必要搞流程化,搞流程就是把简单事情复杂化。 正是基于上述看法,市面上其他的研…

通义灵码上新推理模型,快来体验数学编程双冠王 Qwen2.5-Max

近日,通义灵码上新模型选择功能,除新增 DeepSeek 满血版 V3 和 R1 外,Qwen2.5-Max 也正式上线,它使用了超过 20 万亿 token 的预训练数据及精心设计的后训练方案进行训练。 在通义灵码智能问答、AI 程序员窗口的输入框中,单击模型选择的下拉菜单即可选择所需模型。将 Qwen…

寒假结训总结

首先是这周的各种比赛结果: 个人赛8:(这场比赛感觉运气比较好 首先是前面的题做得很快,然后有一道正解需要KMP或者哈希的题被我用假做法过去了(数据太水),还有一道本来是数位DP的题目假贪心也过去了(好像大部分人都是这么做的),总的来说本来应该排第八,没做出来的那…

Git报错:remote: HTTP Basic: Access denied的解决方法

问题原因: 账号密码验证不通过,密码或者权限不对,导致 Git 操作失败。 解决方案: 输入:git config --system --unset credential.helper 再次进行 Git 操作,输入正确的用户名,密码即可。

wsl2(win11)启用图形界面

WSLg WSLg 是Windows Subsystem for Linux GUI的缩写,意图在WSL中支持直接运行Linux GUI程序,界面和Windows桌面环境无缝集成。 开启WSLg 按下 Win + R,调出命令输入窗口。输入指令 appwiz.cpl。 点击左侧的 【启动或关闭 Windows 功能】:需要勾选【适用于 Linux 的 Window…

鸿蒙安装HAP时提示“code:9568344 error: install parse profile prop check error” 问题现象

在启动调试或运行应用/服务时,安装HAP出现错误,提示“error: install parse profile prop check error”错误信息。解决措施 该问题可能是由于应用使用了应用特权,但应用的签名文件发生变化后未将新的签名指纹重新配置到设备的特权管控白名单文件install_list_capability.js…

windows11使用命令行删除文件夹

是否遇到登录账户是管理员,但是仍然提示需要管理员才能删除文件夹,使用windos11自带的命令行工具可以解决。 搜索终端,右键,使用管理员运行复制要删除文件夹的路径比如,要删除桌面的 test-del 文件夹 执行命令 rmdir 路径文件夹内容多,可能提示,按Y就删除了

前端中级面试知识点总结(个人总结自用,不具有普适性,请自行斟酌使用)

25年三月面试前端中高级开发时所作的知识点总结,以应对面试提问Mapbox 基础示例 其中style是重点,可以是url,可以是json配置对象,主要配置图层、图标、数据源等 mapboxgl.accessToken = <输入你的token>;const map = new mapboxgl.Map({container: map, // 地图容器 …

世界第一!阿里云PolarDB刷新全球数据库性能及性价比记录

2月26日,在2025阿里云PolarDB开发者大会上,阿里云宣布PolarDB登顶全球数据库性能及性价比排行榜。根据国际数据库事务处理性能委员会(TPC,Transaction Processing Performance Council)官网披露,阿里云PolarDB云原生数据库以超越原记录2.5倍的性能一举登顶TPC-C基准测试排…