
并查集
文章平均质量分 55
算法
Strive_LiJiaLe
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
并查集应用——Kruskal(最小生成树)C++
生成树:连通图的极小连通子图最小生成树:生成树中权值最小的那棵。并查集:用来判断每次新加入边的顶点是否已经存在于正在建立的最小生成树集合中,若已包含,舍去;否则加入进行合并。#include "test.h"#include <iostream>#include <cstdio>#include <algorithm>using namespace std;const int MAXN = 1000;struct Edge{ int from原创 2021-09-13 21:42:32 · 182 阅读 · 0 评论 -
并查集简单应用——判断图的连通性
将节点进行初始化,然后每加入一条边就建立连接,最后的连通分量个数就是不同集合的个数,而不同集合的个数就是根节点不变(初始化本身)的个数。#include <cstdio>using namespace std;const int MAXN = 1000;int father[MAXN];int height[MAXN];void Initial(int n ){ for (int i = 0; i < n; ++i) { father[i] =原创 2021-09-13 20:57:53 · 402 阅读 · 0 评论 -
省份数量——并查集
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码原创 2021-04-27 18:57:47 · 211 阅读 · 0 评论 -
并查集(入门)——C
一.简介会以故事的形式讲解,当看完故事描述,就会理解并查集是如何解决问题的,及其一般特征。二.问题引入原题:杭电hdu1232畅通工程题意:首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判断它们是否连通,或者问你整幅图一共有几个连通分支,也就是被分成了几个互相独立的块。像畅通工程这题,问还需要修几条路,实质就是求有几个连通分支。如果是1个连通分支,说明整幅图上的点都连起来了,不用再修路了;如果是原创 2021-04-21 11:32:23 · 215 阅读 · 0 评论 -
并查集(进阶)——C
文章目录前言一、进阶学什么?二、引入问题1.问题描述2.分析三、进阶:增加权来代表具体关系思考:==我们是否可以利用带权来存储每个节点与父节点的关系内容。==四、权值(具体关系)的更新五、公式证明find():r[x] = (r[x]+r[t])%2;unite():r[fx] = (r[x]+1+r[y])%2;全部代码相关例题总结前言并查集(入门)学完后,对并查集有了基本的了解:并查集可以判断一幅无向图中有几个连通分量并查集的find、join函数都是必不可少的路径压缩算法对于并查集的优化原创 2021-04-21 17:42:39 · 924 阅读 · 0 评论 -
POJ1182
题意:三类动物A、B、C构成食物链循环,告诉两个动物的关系(同类或天敌),判断有多少个关系是和正确的冲突。哈哈,看到这道题,一下子就注意到三类动物,之前我们研究的是两类,现在只是多了一类而已,真的是而已吗?显然不是,如果我们依照上面的想法做,每来一对动物a b就将他们归于同一个祖先下,最后,只剩下一个连通分支。如果我们仍然设r[x]表示x与根结点的关系,那么就有r[x]=0表示与根结点同类,r[x]=1表示与根结点异类(???貌似有三个类啊??这样无法区分另外两个类啊)。既然之前的想法不能解决问题,我转载 2021-04-21 18:09:22 · 246 阅读 · 0 评论