zoukankan      html  css  js  c++  java
  • hdu 2473 并查集

    思路:每次合并时,都是给一个虚拟的根。

    #include<map>
    #include<Set>
    #include<cmath>
    #include<queue>
    #include<cstdio>
    #include<vector>
    #include<string>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define Maxn 100010
    #define Maxm 2000010
    #define LL __int64
    #define Abs(x) ((x)>0?(x):(-x))
    #define lson(x) (x<<1)
    #define rson(x) (x<<1|1)
    #define inf 0x3f3f3f3f
    #define Mod 1000000007
    using namespace std;
    int Set[Maxn*2],cnt,vi[Maxn*2],n;
    void init()
    {
        for(int i=0;i<Maxn*2;i++)
            Set[i]=i;
        memset(vi,0,sizeof(vi));
        cnt=n;
    }
    int Find(int x)
    {
        if(Set[x]!=x)
            Set[x]=Find(Set[x]);
        return Set[x];
    }
    void merg(int a,int b)
    {
        int x,y;
        x=Find(a);
        y=Find(b);
        if(Set[x]==a&&Set[y]==b){
            Set[x]=++cnt,Set[y]=cnt;
            return ;
        }
        if(Set[x]==Set[y])
            return ;
        if(x<=n)
            Set[x]=y;
        else
            Set[y]=x;
    }
    int main()
    {
        int m,i,j,u,v,Case=0;
        char str[3];
        while(scanf("%d%d",&n,&m),n||m){
            init();
            for(i=1;i<=m;i++){
                scanf("%s",str);
                if(str[0]=='M'){
                    scanf("%d%d",&u,&v);
                    merg(u,v);
                }
                else{
                    scanf("%d",&u);
                    Set[u]=u;
                }
            }
            int ans=0;
            for(i=0;i<n;i++){
                u=Find(i);
                if(!vi[u]){
                    ans++;
                    vi[u]=1;
                }
            }
            printf("Case #%d: %d
    ",++Case,ans);
        }
        return 0;
    }
  • 相关阅读:
    索引的优缺点
    php中创建和调用WebService
    Redis常用数据结构和操作
    PHP的array_merge
    数据库最左前缀原则
    Mysql+Sphinx实现全文搜索
    YAPI安装和使用
    根据导入xlxs的文件,来写入数据库
    操作RDS文档说明
    springboot查找配置文件路径的过程
  • 原文地址:https://www.cnblogs.com/wangfang20/p/3290166.html
Copyright © 2011-2022 走看看