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

二分图-染色法-dfs

1.判断一个图是否是二分图当且仅当图中不包含奇数环
2. dfs当前边为1 他的临边为2 看是否满足条件
3. 注意图有可能不是连通图

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;public class BinaryGraph {private static int N = 100010;//还没有进行初始化!private static int[] h = new int[N];private static int[] e = new int[N];private static int[] ne = new int[N];private static int idx;private static  int[] colors = new int [N];private static int n;private static int m;private static boolean flag = true;public static void add(int a, int b){e[idx] = b;ne[idx] = h[a];h[a] = idx++;}public static boolean dfs(int a, int c){colors[a] = c;for(int i = h[a]; i != -1; i = ne[i] ){int j = e[i];//如果没有对这个点进行染色if(colors[j] == 0){dfs(j,3 - c);}else if(colors[j] == c){flag = false;return false;}}return true;}public static void main(String[] args) throws IOException {BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));String[] s = reader.readLine().split(" ");n = Integer.parseInt(s[0]);m = Integer.parseInt(s[1]);Arrays.fill(h,-1); //对h进行初始化for(int i = 0; i < m; i++){String[] s1 = reader.readLine().split(" ");int u = Integer.parseInt(s1[0]);int v = Integer.parseInt(s1[1]);//无向图add(u,v);add(v,u);}for(int i = 1; i <= n; i++){//当前点没有被染色if(colors[i] == 0){//染色时出现冲突if(!dfs(i,1)){flag = false;break;}}}if(flag){System.out.println("Yes");}else System.out.println("No");}
}
http://www.lryc.cn/news/149651.html

相关文章:

  • SQL优化案例教程0基础(小白必看)
  • webpack(一)模块化
  • 基于Java+SpringBoot+Vue前后端分离人力资源管理系统设计和实现
  • 安装配置mariadb
  • Ant Design Vue 日期选择器DatePicker传给后台日期参数格式问题
  • springboot1.5.12升级至2.6.15
  • Android Event事件分发(新版本)
  • 可控生成:ControlNet原理
  • 【极客时间】MySQL 必知必会-20230901
  • 53 个 CSS 特效 3(完)
  • 简单数学题:找出最大的可达成数字
  • [C++ 网络协议] 套接字的多种可选项
  • 2022年03月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • ***数据转换中常用的两个函数 sscanf,sprintf
  • 软件工程(十九) 软件测试
  • go中读写锁(rwmutex)源码解读实现原理
  • 【人工智能】—_深度优先搜索、代价一致搜索、深度有限搜索、迭代深度优先搜索、图搜索
  • uni-app 客服按钮可上下拖动动
  • 基于Android的旅游管理系统 微信小程序
  • python-数据可视化-下载数据-CSV文件格式
  • 时序预测 | MATLAB实现SSA-XGBoost(麻雀算法优化极限梯度提升树)时间序列预测
  • leetcode 823 带因子的二叉树
  • 钉钉消息已读、未读咋实现的嘞?
  • Java 读取TIFF JPEG GIF PNG PDF
  • 研磨设计模式day14模板方法模式
  • 7 集群基本测试
  • chrono学习(一)
  • 后端面试话术集锦第 十 篇:springMVC面试话术
  • 基于Django 框架搭建的机器学习在线平台源代码+数据库,实现KNN、ID3、C4.5、SVM、朴素贝叶斯、BP神经网络等算法及流程管理
  • 大数据组件-Flume集群环境搭建