zoukankan      html  css  js  c++  java
  • 二分图问题

    判断二分图方法:用染色法,把图中的点染成黑色和白色。
    首先取一个点染成白色,然后将其相邻的点染成黑色,如果发现有相邻且同色的点,那么就退出,可知这个图并非二分图。

    二分图中不存在奇环, 所以可以用染色法判断奇环

    int istwo(int u)
    {
        queue<int> E;
        mem(vis, -1);
        E.push(u);
        vis[u] = 1;
        while(!E.empty())
        {
            u = E.front(); E.pop();
            for(int i=0; i<G[u].size(); i++)
            {
                int v = G[u][i];
                if(vis[v] == -1)
                {
                    if(vis[u] == 1) vis[v] = 0;
                    else vis[v] = 1;
                    E.push(v);
                }
                else if(vis[v] == vis[u])
                    return 0;
            }
        }
        return 1;
    }
    
    int main()
    {
        istwo(1);
    }

    如果分为两队

    使每队里的人都相互认识  则不认识的两个人建边然后染色

    使每队里的人都不相互认识  则认识的两个人建边然后染色

    自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
  • 相关阅读:
    oracle的over函数应用(转载)
    Oracle decode()函数应用
    EL表达式显示数据取整问题
    null值与空值比较
    case when语句的应用
    堆排序
    希尔排序
    插入排序
    异或运算
    选择排序
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/9309618.html
Copyright © 2011-2022 走看看