栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Leetcode--Java--785. 判断二分图

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Leetcode--Java--785. 判断二分图

题目描述

样例描述

思路

染色法 (DFS + 递归 / BFS )
一个图是二分图等价于图可以被二染色等价于图中不含有奇数环

染色法的思路:

图的存储最常用是链式前向星,参考这里,本题就用二维数组存储图即可

代码

dfs + 递归思想

class Solution {
    int g[][];
    int vis[];
    public boolean isBipartite(int[][] graph) {
        int n = graph.length;
        g = graph;
        vis = new int[n]; //0表示未染色,1和-1表示两种颜色
        for (int i = 0; i < n; i ++ ) {
                //没有染色就进行染色,失败就直接false
                if (vis[i] == 0 && !dfs(i, 1)) {
                    return false;
                }
        }
        return true;
    }
    public boolean dfs(int u, int color) {
        //如果已经染过色,对比是否一样   不一样就矛盾
        if (vis[u] != 0) {
            return vis[u] == color;
        }
        vis[u] = color;
        for (int vtx: g[u]) {
            //将所有相邻的结点染成不同的颜色
            if (!dfs(vtx, -color)) {
                return false;
            }
        }
        return true;
    }
}

BFS

class Solution {
    public boolean isBipartite(int[][] graph) {
        int n = graph.length;
        int vis[] = new int[n];
        Deque q = new linkedList<>();
        //由于可能有多个连通域,要遍历每个结点
        for (int i = 0; i < n; i ++ ) {
            //如果顶点访问过
            if (vis[i] != 0) {
                continue;
            }
            q.offer(i);
            vis[i] = 1;
            while (!q.isEmpty()) {
                int node = q.poll();
                //遍历所有的邻结点
                for (int v: graph[node]) {
                    //颜色一样就false
                    if (vis[v] == vis[node]) {
                        return false;
                    }
                    //染相反的颜色,然后入队
                    if (vis[v] == 0) {
                        vis[v] = -vis[node];
                        q.offer(v);
                    }
                }
            }
        }
        return true;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/782100.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号