zoukankan      html  css  js  c++  java
  • 886. 可能的二分法(二分图染色)

    class Solution {
        int[] color;
        Map<Integer,List<Integer>> map;
        public boolean possibleBipartition(int N, int[][] dislikes) {
            map = new HashMap<>();
            color = new int[N+1];
            for(int[] d : dislikes) {
                map.computeIfAbsent(d[0],k->new ArrayList<>()).add(d[1]);
                map.computeIfAbsent(d[1],k->new ArrayList<>()).add(d[0]);
            }
            for(int i = 1; i <= N; i++) {  // 每个点都要出发进行dfs染色
                if(color[i] != 0) continue;
                if(!dfs(i,1)) return false; // 染成1 2两种颜色
            }
            return true;
    
        }
        public boolean dfs(int u, int c) {
            color[u] = c;
            if(!map.containsKey(u)) return true;
            for(int k : map.get(u)) {
                if(color[k] != 0) {
                    if(color[k] == c) {
                        return false;
                    }
                } else {
                    if(!dfs(k,3-c)) return false;
                }
            }
            return true;
        }
    }
  • 相关阅读:
    golang变量2
    golang1
    golang api接收get,post请求读取内容方法
    docker2
    docker
    渗透1
    Crawley框架
    spider类
    爬豆瓣阅读遇到的问题
    CrawlSpiders类
  • 原文地址:https://www.cnblogs.com/yonezu/p/13524212.html
Copyright © 2011-2022 走看看