• POJ 1611


    菜鸟第一次做这种。想了好一会儿.==

    首先还是初始化记忆数组,使得每一个元素的初始根节点是自己。

    然后是对输入的数据进行并集。我们拿出每组元素的第一个作为根节点。

    每次检测是否已经存在根节点。如果存在根节点压缩该元素通往新的根节点的路径,同时将其原来的根节点接在新的根节点上。

    第一次WA是因为忽略了剩余元素的根节点没有更新。倒数第二个循环用于把所有点都连接到根节点上。

    #include<stdio.h>
    #include<iostream>
    using namespace std;
    int stu[30000];
    int main()
    {
        int n,m,k,tmp1,tmp2,tmp3,er;
        scanf("%d%d",&n,&m);
        while(n)
        {
            for(int i=0;i<n;i++)
            {
                stu[i]=i;
            }
            for(int i=0;i<m;i++)
            {
                scanf("%d",&k);
                scanf("%d",&tmp1);
                for(int j=0;j<k-1;j++)
                {
                    scanf("%d",&tmp2);
                    while(stu[tmp2]!=tmp2)
                    {
                        tmp3=tmp2;
                        tmp2=stu[tmp2];
                        stu[tmp3]=stu[tmp1];
                    }
                    stu[tmp2]=stu[tmp1];
                }
            }
            er=0;
            for(int i=0;i<n;i++)
            {
                tmp2=i;
                while(stu[tmp2]!=tmp2)
                {
                    tmp2=stu[tmp2];
                }
                stu[i]=tmp2;
            }
            for(int i=0;i<n;i++)
            {
                if(stu[i]==stu[0])
                {
                    er++;
                }
            }
            printf("%d
    ",er);
            scanf("%d%d",&n,&m);
        }
        return 0;
    }
  • 相关阅读:
    打包其他资源(除html/css/js 资源以外的资源)
    打包图片资源
    打包html资源
    css3
    Webpack 入门(一):安装 / 打包 / 命令行
    手动配置webpack
    实现登录
    回调函数和钩子函数
    不能局部安装webpack的解决方法
    Vue.js双向绑定的实现原理
  • 原文地址:https://www.cnblogs.com/tun117/p/4403128.html
Copyright © 2020-2023  润新知