• 并查集模版


    #include <stdio.h>
    int bin[50010];

    int findx(int x)
    {
        int r=x;
        while(r!=bin[r])
            r=bin[r];
        int j=x;
        int k;
        while(bin[j]!=r)
        {
           k=bin[j];
           bin[j]=r;
           j=k;
        }
        return r;
    }

    void merge(int x,int y)
    {
        int fx,fy;
        fx = findx(x);
        fy = findx(y);
        if(fx != fy)
            bin[fx] = fy;
    }

    int main()
    {
        int n,m,x,j,y,i,k=0,count;
        bin[0]=0;
        while(scanf("%d%d",&n,&m)!=EOF&&(n||m))
        {
            for(i=1;i<=n;i++)
                bin[i]=i;
            for(j=m;j>0;j--)
            {
                scanf("%d %d",&x,&y);
                merge(x,y);
            }
            for(count=0,i=1;i<=n;i++)
                if(bin[i] == i)
                    count ++;
            k++;
            printf("Case %d: %d ",k,count);

        }
           return 0;
    }

    #include <stdio.h>
    int bin[50010];

    int findx(int x)
    {
        int r=x;
        while(r!=bin[r])
            r=bin[r];
        int j=x;
        int k;
        while(bin[j]!=r)
        {
           k=bin[j];
           bin[j]=r;
           j=k;
        }
        return r;
    }

    void merge(int x,int y)
    {
        int fx,fy;
        fx = findx(x);
        fy = findx(y);
        if(fx != fy)
            bin[fx] = fy;
    }

    int main()
    {
        int n,m,x,j,y,i,k=0,count;
        bin[0]=0;
        while(scanf("%d%d",&n,&m)!=EOF&&(n||m))
        {
            for(i=1;i<=n;i++)
                bin[i]=i;
            for(j=m;j>0;j--)
            {
                scanf("%d %d",&x,&y);
                merge(x,y);
            }
            for(count=0,i=1;i<=n;i++)
                if(bin[i] == i)
                    count ++;
            k++;
            printf("Case %d: %d ",k,count);

        }
           return 0;
    }

  • 相关阅读:
    linux服务器安装nginx及使用
    服务器搭建
    Linux安装mysql5.7
    个人服务器的选择
    DECODE函数简介
    ORACLE数据库优化
    Mac下JD-GUI无法使用
    Qt 中QString 字符串操作:连接、组合、替换、去掉空白字符
    [Qt初级] 解决 中QMainWindow和QDockWidget添加布局失败问题
    我的JS 中级学习篇
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/3667312.html
Copyright © 2020-2023  润新知