并查集 将集合在逻辑上表示为树结构。

void Initial() {
    for(int i=0; i<n; i++) {
        father[i]=i;
        height[i]=0;
    }
    return ;
}

int Find(int x) {                                                                        //路径压缩
    if(x!=father[x]) {
        father[x]=Find(father[x]);
    }
    return father[x];
}

void Union(int x,int y) {                                                           //合并集合
    x=Find(x);
    y=Find(y);
    if(x!=y) {
        if(height[x]>height[y]) {
            father[y]=x;
        } else if(height[x]<height[y]) {
            father[x]=y;
        } else {
            father[y]=x;
            height[x]++;
        }
    }
    return ;                                                                        //防止成环
}



只能判断是否为连通图,或用来求图的连通分量的个数。
不能认为只有一个连通分量其一定就为树。
树是有向的。 连通分量无向!!
其可能有多个根结点。
全部评论
bool Istree() { bool f=1; int component=0; int root=0; for(int i=0; i<Max; i++) { if(!visit[i]) { continue; } if(i==father[i]) { component++; } if(Indegree[i]==0) { root++; } else if(Indegree[i]>1) { f=0; } } if(component!=1||root!=1) { f=0; } if(component==0&&root==0) { f=1; } return f; } 判断为树,一个根结点,度为0,其余结点度为1,各个结点同属一个集合!!!
点赞 回复 分享
发布于 2022-10-13 20:26 福建

相关推荐

看到这个内容真是闹麻了。。。。。。现在有了AI以后很多人面试都会作弊吗?&nbsp;那对老老实实面试的人岂不是不公平....
程序员牛肉:公平那是对小孩子讲的童话故事,成年人的世界只有能不能接受失败的后果。 你要是能接受面试作弊被发现之后多家公司联合永久拉黑的后果,你就搞。
点赞 评论 收藏
分享
仁者伍敌:难怪小公司那么挑剔,让你们这些大佬把位置拿了
点赞 评论 收藏
分享
小浪_Coding:找硬件测试,也可兼顾软测欧, 简历还可以的 ,注意排版,项目写的有条理一点, 然后个人技能多加点, 润色好简历之后就开始沟通海投了,深圳,东莞这边做硬件相关的公司还不少, 医疗类,仪器类的都可以尝试
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务