码迷,mamicode.com
首页 > 其他好文 > 详细

判断二分图

时间:2018-07-14 16:49:39      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:++   queue   一个   pre   empty   bsp   main   i++   color   

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

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);
}

 

判断二分图

标签:++   queue   一个   pre   empty   bsp   main   i++   color   

原文地址:https://www.cnblogs.com/WTSRUVF/p/9309618.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!