zoukankan      html  css  js  c++  java
  • UVA 11396 Claw Decomposition 染色

    原题链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2391

    题意:

    就给你一个图,图中每个点的度都为3,问你能不能分解为若干爪印。。。爪印的定义就是一个中心点,三个叶子的树。

    题解:

    由于每个点的度都为3,那么每个点要么是爪印的中心,要么是叶子,而且是交替出现的,所以只要黑白染色就好

    代码:

    #include<iostream>
    #include<cstring>
    #include<vector>
    #include<cstdio>
    #include<algorithm>
    #define MAX_N 555
    using namespace std;
    
    vector<int> G[MAX_N];
    int n;
    int d[MAX_N];
    
    bool dfs(int u,int p){
        d[u]=d[p]^1;
        bool tmp=true;
        for(int i=0;i<G[u].size();i++){
            if(d[G[u][i]]==d[u])return false;
            if(d[G[u][i]]==-1)
                tmp&=dfs(G[u][i],u);
        }
        return tmp;
    }
    
    int main(){
        while(scanf("%d",&n)){
            if(n==0)break;
            int u,v;
            for(int i=0;i<=n;i++)G[i].clear();
            while(true){
                scanf("%d%d",&u,&v);
                if(u+v==0)break;
                G[u].push_back(v);
                G[v].push_back(u);
            }    
            bool flag=true;
            memset(d,-1,sizeof(d));
            d[0]=0;
            flag=dfs(1,0);
            memset(d,-1,sizeof(d));
            d[0]=1;
            flag&=dfs(1,0);
            if(flag)
                printf("YES
    ");
            else 
                printf("NO
    ");
        }
        return 0;
    }
  • 相关阅读:
    Java之旅_高级教程_数据结构
    Java之旅_高级教程_多线程编程
    Java之旅_高级教程_URL处理
    Java之旅_高级教程_网络编程
    Java问题汇总
    java之旅_高级教程_java泛型
    Chrome中安装Firebug插件
    Selenium+Python环境搭建
    批处理DOS基础命令
    Appium-两个小报错
  • 原文地址:https://www.cnblogs.com/HarryGuo2012/p/4873354.html
Copyright © 2011-2022 走看看