当前位置: 首页 > article >正文

力扣785. 判断二分图

力扣785. 判断二分图

题目

在这里插入图片描述

题目解析及思路

题目要求将所有节点分成两部分,每条边的两个端点都必须在不同集合中

二分图:BFS/DFS/并查集

因为图不一定联通,所以枚举所有点都做bfs(如果没联通的话)

代码

class Solution {
public:
    bool isBipartite(vector<vector<int>>& graph) {
        int n = graph.size();
        vector<int> st(n,0);
        
        for(int i=0;i<n;i++){
            if(st[i] == 0){
                queue<int> q;
                q.push(i);
                //先染成1
                st[i] = 1;
                while(q.size()){
                    int t = q.front();
                    //equal为和t的颜色不一样的那个颜色
                    int equal = (st[t] == 1 ? 2 : 1);
                    q.pop();
                    for(int v : graph[t]){
                        //没被染色
                        if(st[v] == 0){
                            q.push(v);
                            st[v] = equal;
                        }
                        //染过色而且是相同颜色
                        else if(st[v] != equal){
                            return false;
                        }
                    }
                }
            }
        }
        return true;
    }
};

http://www.kler.cn/a/569760.html

相关文章:

  • 黑龙江省地标-DB31/T 862-2021 “一网通办”政务服务中心建设和运行规范
  • js基础二
  • 我通过AI编程完成了第一个实用程序
  • 避免 Git 文件名大小写出错
  • CAN总线通信协议学习2——数据链路层之帧格式
  • 服务器项目部署环境配置(windows10)
  • 【大模型系列篇】DeepSeek开源周,解锁AI黑科技
  • Mac OS Homebrew更换国内镜像源(中科大;阿里;清华)
  • keil主题(vscode风格)
  • leetcode 59. 螺旋矩阵 II 中等
  • C# 中 Array、ArrayList 和 List 的比较
  • 【前端基础】3、HTML的常用元素(h、p、img、a、iframe、div、span)、不常用元素(strong、i、code、br)
  • 2025年3月2日笔记
  • DeepSeek 助力 Vue3 开发:打造丝滑的悬浮按钮(Floating Action Button)
  • CentOS 7 日志切割实战:Logrotate 详解与配置指南
  • Java 8 中,可以使用 Stream API 和 Comparator 对 List 按照元素对象的时间字段进行倒序排序
  • 解决vue中formdata 传值为空 控制台报错SyntaxError - expected expression, got ‘<‘
  • Java基础之集合
  • FPGA的ram Xilinx的IP Block Memory Generator
  • GPIO及其应用