zoukankan      html  css  js  c++  java
  • 正则二分图 K 染色

    啊,正则二分图能 k 染色就不证了吧

    学过好多遍,但是学一次忘一次 T^T

    所以还是水成 blog 吧……

    这玩意可以做一般二分图,因为我们可以随手补成正则二分图。

    所以,对于一般二分图,最小染色是最大点度数。我们基于这一点魔改匈牙利。

    由于每一条边都要丢进匹配内,为了调整答案的方便,类似匈牙利每次加入一个点,我们每次加入一条边。

    同时,也使用交错路增广。

    考虑在两个点之间加一条边,度数增加了 (1),那么我们分别取值为 ( extrm{mex}),记为 (L, R),来染色。

    那么我们就要找一条 (L, R, L, R, dots) 的交错路。

    我们要说明这是可以终止的。显然不会出现环,不然与 ( extrm{mex}) 或染色矛盾。

    这样不断加入边,就可以一直维护染色的性质。

    每次访问 (O(n)) 个点,复杂度 (O(nm))

    void dfs(int l, int r, int x, int y, int cx, int cy) {
    	col[l][x][cx] = y;
    	if (int v = col[r][y][cx])
    		col[l][v][cx] = 0, dfs(r, l, y, v, cy, cx);
    	col[r][y][cx] = x;
    }
    void adde(int x, int y) {
    	int ca, cb;
    	for (ca = 1; col[0][x][ca]; ++ca) ;
    	for (cb = 1; col[1][y][cb]; ++cb) ;
    	dfs(0, 1, x, y, ca, cb);
    }
    
  • 相关阅读:
    Distinct Values
    树状数组求逆序数
    Color the ball
    Cube
    树状数组
    手动编写JQUERY插件
    JQuery和原生JS跨域加载JSON数据或HTML。
    使用CEF(CEFGLUE)作为您的客户端UI(一)
    给IIS添加网站配置权限
    SQL SERVER 报:由于数据移动,未能继续以 NOLOCK 方式扫描错误的解决办法。
  • 原文地址:https://www.cnblogs.com/daklqw/p/13629043.html
Copyright © 2011-2022 走看看