zoukankan      html  css  js  c++  java
  • BZOJ 1116 [POI2008]CLO-Toll 并查集

    如果一个连通块是一个树的形态,则不合法,否则合法. 

    用并查集判断一下即可. 

    #include <bits/stdc++.h> 
    #define N 100005 
    #define M 200005 
    #define setIO(s) freopen(s".in","r",stdin) 
    using namespace std;    
    struct G 
    {
        int edges; 
        int hd[N],to[M<<1],nex[M<<1];       
        void add(int u,int v) 
        {
            nex[++edges]=hd[u],hd[u]=edges,to[edges]=v;  
        }
    }gr,tr;   
    struct Union_Find_set
    { 
        int p[N],is[N];     
        void init() 
        {
            for(int i=0;i<N;++i) p[i]=i; 
        } 
        int find(int x) 
        {
            return p[x]==x?x:p[x]=find(p[x]); 
        }
    }ufs;
    int n,m,flag;    
    int vis[N];     
    void dfs(int u,int ff) 
    {
        vis[u]=1;    
        for(int i=gr.hd[u];i;i=gr.nex[i]) 
        {
            int v=gr.to[i];     
            if(v==ff) continue;  
            if(!vis[v]) tr.add(u,v),tr.add(v,u),dfs(v, u); 
            else if(vis[v] && flag==0) 
            { 
                tr.add(u, v);    
                tr.add(v,u);    
                flag=1; 
            }       
        }
    }
    int main()  
    {  
        int i,j,k; 
        scanf("%d%d",&n,&m);  
        ufs.init();  
        for(i=1;i<=m;++i) 
        {
            int a,b;  
            scanf("%d%d",&a,&b); 
            gr.add(a,b);  
            gr.add(b,a);     
            a=ufs.find(a); 
            b=ufs.find(b);  
            if(a!=b) ufs.p[a]=b, ufs.is[b]|=ufs.is[a];     
            else ufs.is[a]=1;
        }     
        for(i=1;i<=n;++i) 
        {
            if(ufs.p[i]==i && !ufs.is[i]) 
            {
                printf("NIE
    "); 
                return 0; 
            }
        }
        printf("TAK
    ");  
        return 0; 
    }
    

      

  • 相关阅读:
    selenium
    js兼容
    gcc 编译问题
    winrar 命令行 解压文件
    php 页面 不显示任何错误提示
    php 禁止谷歌蜘蛛抓取
    LINUX 实现端口转发
    phpredisadmin 莫名其妙错误,打开了无法显示任何数据
    Convert.ToInt32、(int)和int.Parse三者的区别
    C# 点击打开浏览器
  • 原文地址:https://www.cnblogs.com/guangheli/p/11602978.html
Copyright © 2011-2022 走看看