• BZOJ 1116 [POI2008]CLO


    不一定要一颗树 连通块是树就行 
    但树根没有入度 说明至少还要有一条没出现过的边连接各连通块内的点 故一个连通块边数大于等于其点数时就满足条件

     

    注意:1.不是非按佚合并不可

            2.其实不用存边,边读入边处理即可

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e5+5;
    const int M=2e5+5;
    struct P{
        int x,y;
    }e[M];
    int f[N],flag[N];
    int find(int x){
        int now=x,t;
        while(x!=f[x])x=f[x];
        while(now!=x){
            t=f[now];
            f[now]=x;
            now=t;
        }
        return x;
    }
    
    /*void unio(int x,int y){
        int fx=find(x),fy=find(y);
        if(rank[fx]<rank[fy])f[fx]=fy;
        else{
            if(rank[fx]==rank[fy]) rank[fx]++;
            f[fy]=fx;
        }
    }*/
    int main(){
        int n,m,ans=0;
        cin>>n>>m;
        for(int i=1;i<=m;i++)cin>>e[i].x>>e[i].y;
        for(int i=1;i<=n;i++)f[i]=i;
        for(int i=1;i<=m;i++){
            int fx=find(e[i].x),fy=find(e[i].y);
            if(fx==fy)flag[fx]=1;
            else{
                if(flag[fx])f[fy]=fx;
                else f[fx]=fy;
            }
        }
        for(int i=1;i<=n;i++)
         if(find(i)==i&&!flag[i])ans=1;
         cout<<(ans?"NIE":"TAK");
         return 0;
    }

     

     

     

  • 相关阅读:
    11月7日
    11月6日
    11月5日
    11月4日
    html5
    intern
    pjtool用到的数据库----oracle范畴
    运用的jdk版本如何查看
    JAVA 一句话技巧
    [ios 开发笔记]:一句话笔记
  • 原文地址:https://www.cnblogs.com/wyh447154317/p/12228563.html
Copyright © 2020-2023  润新知