zoukankan      html  css  js  c++  java
  • BZOJ2079: [Poi2010]Guilds

    【传送门:BZOJ2079


    简要题意:

      给出一个无向图,每个点可以成为两种状态,也可以保持原状

      求是否能使得每个点都与两个状态相邻(包括自身)


    题解:

      直接搞,实际上就是找无边相连的点

      因为如果一个连通块的大小为1,显然不可能使得每个点都与两个状态相邻

      然后,其他的连通块,只需要找出它的任意一棵生成树(肯定是二分图),所以直接黑白染色就可以了

      所以只要找孤立点就可以了


    参考代码:

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cstdlib>
    #include<cmath>
    using namespace std;
    bool v[210000];
    int main()
    {
        int n,m;
        scanf("%d%d",&n,&m);
        memset(v,false,sizeof(v));
        for(int i=1;i<=m;i++)
        {
            int x,y;
            scanf("%d%d",&x,&y);
            if(x!=y) v[x]=v[y]=true;
        }
        for(int i=1;i<=n;i++) if(v[i]==false){printf("NIE
    ");return 0;}
        printf("TAK
    ");
        return 0;
    }
  • 相关阅读:
    集合
    第五天
    第四天
    第二天
    ieee 期刊缩写(转载)
    JAVA学习笔记03
    JAVA学习笔记2
    JAVA学习笔记01
    Latex 图片排版
    非奇异终端滑模
  • 原文地址:https://www.cnblogs.com/Never-mind/p/8649357.html
Copyright © 2011-2022 走看看