zoukankan      html  css  js  c++  java
  • uva 11396 Claw Decomposition(二分图)

    题意:给出一个n个节点的简单无向图,每个节点的度数为3,判断能否分解成题意给出的那种爪,一个中心节点带着三个边,每条边只属于一个爪,一个点可以属于多个爪

    分析:如果一个点是一个爪的中心节点,那么它与它相连的三个点都不可能是一个爪的中心,那么就可以把图抽象为两种节点,染色节点和不染色节点,而且染色节点和染色节点不可能相邻,并且不染色节点也不可能与不染色节点相邻,那么这就是一个裸的二分图

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1e5+5;
    
    int color[maxn];
    vector<int> G[maxn];
    int n;
    bool bipartite(int u){
        for(int i=0;i<G[u].size();i++){
                int v=G[u][i];
                if(color[v]==color[u])return false;
                if(!color[v]){
                        color[v]=3-color[u];
                        if(!bipartite(v))return false;
                }
        }
        return true;
    }
    
    void init(){
        memset(color,0,sizeof(color));
        for(int i=1;i<=n;i++)G[i].clear();
    }
    
    int main(){
        while(~scanf("%d",&n)&&n){
                init();
                int u,v;
                while(~scanf("%d%d",&u,&v)&&u+v){
                        G[u].push_back(v);
                        G[v].push_back(u);
                }
                color[1]=1;
                if(bipartite(1))
                    puts("YES");
                else
                    puts("NO");
        }
        return 0;
    }
  • 相关阅读:
    12/21
    和寶寶在一起3/10
    11/23
    c#windows应用程序窗体间传值
    用OWC做统计图
    javascript 创建字典
    .NetCom双向数据交换的实现(RecordSet与.Net DataSet的转化)
    JScript 方法 indexOf 方法
    详尽解析window.event对象
    Window.Open详解
  • 原文地址:https://www.cnblogs.com/jihe/p/5365377.html
Copyright © 2011-2022 走看看