首页 > 其他分享 >带权并查集 学习笔记

带权并查集 学习笔记

时间:2024-10-21 21:34:12浏览次数:1  
标签:cnt int 查集 fr 笔记 fa 带权 权值 find

顾名思义,就是并查集带权值。
在路径压缩的时候,我们还要维护权值应该怎么办呢?

关联题目:P1196 [NOI2002] 银河英雄传说

我们对于一个舰队维护一个 \(fr\) 表示到头部的距离,\(cnt\) 表示该舰队的战舰数量。那么每一次合并时,先进行路径压缩,找到父亲,在将父亲的权值传下来即可。因为每一次合并都是从被合并的节点传下来,所以不会有重复。

如果还不明白的请看图:

image image

如图,我们将 \(4\) 所在的连通块合并到 \(3\) 所在的连通块,那么 \(\{4,5,6\}\) 会被合并到 \(1\) 的儿子,大小也根据 \(1\) 所在的连通块大小更新。但是这样的话我们就要控制 find() 函数的使用。

点击查看代码
int fa[maxn],fr[maxn],cnt[maxn];
int find(int x) {
	if(fa[x]==x) return x;
	int X=find(fa[x]);
	fr[x]+=fr[fa[x]];
	return fa[x]=X;
}
int T;
signed main() {
	For(i,1,30000) {
		fa[i]=i;
		fr[i]=0;
		cnt[i]=1;
	}
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	cin>>T;
	while(T--) {
		char ch;
		int x,y;
		cin>>ch>>x>>y;
		int X=find(x),Y=find(y);
		if(ch=='M') {
			fa[X]=Y;
			fr[X]+=cnt[Y];
			cnt[Y]+=cnt[X];
		} else {
			if(X!=Y) cout<< -1<<'\n';
			else cout<<abs(fr[x]-fr[y])-1<<'\n';
		}
	}
}

标签:cnt,int,查集,fr,笔记,fa,带权,权值,find
From: https://www.cnblogs.com/CodingGoat/p/18490461

相关文章

  • 位运算笔记
    位运算笔记对二进制数进行直接操作:基础操作:例:a=00001101;b=00110101;与:a&b==00000101;//当两个数的第i位都为1时,a&b的第i位才为1或:a|b==00111101;/*当两个数的第i位都为0时,a|b的第i位才为0或者说两个数的第i位其中至少有一个为1,对应的a|b的第i位就为1*/......
  • HTML笔记
    什么是网站:网站其实是由一个个的网页构成的网页就是放在服务器上面的一个文件我们浏览网页的时候这个文件里的所有代码会被下载到我们本地的电脑,然后再由浏览器解析,渲染而网站就是一个绑定了域名的文件夹,该文件夹中可以包含子文件夹以及各种各样的文件,这些文件都可以通......
  • C++研发笔记4——C语言程序设计初阶学习笔记2
            从今天开始我们开始第二模块初识C语言的学习,在本模块中我们将会涉及到一下14个内容:什么是C语言、第一个C语言程序、数据类型、变量、常量、字符串+转义字符+注释、选择语句、循环语句、函数、数组、操作符、常见关键字、define定义常量和宏、指针......
  • 《微分几何讲义(陈省身)》读书笔记 第二章 多重线性代数
    第二章多重线性代数Note:本文默认了基本的向量空间和矩阵的相关知识。本文中所有的向量空间默认是有限维的,且定义在一个域\(\mathbb{F}\)上。本文采用Einstein求和约定。§1张量积[Def1.1]对于向量空间\(V_1,\cdots,V_r\)和\(Z\),若映射\(f:V_1\times\cdots\timesV......
  • 《程序员修炼之道》读书笔记1
    1.“我的源码让猫给吃了”在工作过程中,出现突发情况,无论是因为磁盘垮了,没有备份,还是交付晚了,都属于是我们个人失误,应该坦率的承认错误,并提出解决方案,向老板和客户解释“我的源码让猫给吃了”没有任何意义。其次,在代码编写工作中,作为成熟的程序员,我们应当知道自己所能承受的极限在......
  • TS学习笔记(三)
    TS语言继承了JS的类型设计,js将值分为8中类型:boolean、string、number、undefined、null、symbol、bigint、object。注意,上面所有类型的名称都是小写字母,首字母大写的Number、String、Boolean等在js语言都是内置对象,而不是类型名称。 bigint与number类型并不兼容constx:bigi......
  • 【论文阅读笔记】An Image is Worth 1/2 Tokens After Layer 2: Plug-and-Play Infere
    论文地址:https://arxiv.org/pdf/2403.06764代码地址:https://github.com/pkunlp-icler/FastV目录IntroductionInefficientVisualAttentioninVLLMsPreliminaries两种分数结果分析FastVOverviewRe-rankandFilteringmodule(core)ThoughtIntroduction现象(问题):大多数LVL......
  • IIC通讯协议笔记
    iic通讯协议片上外设iic主发送器主发送器通讯过程发送开始位后等待EVT5,发送从机(slave)地址等待EVT6和发送要写入从机的寄存器等待EVT8,发送数据等待EVT8_2片上外设主接收器发送过程接收过程......
  • 新高一暑假第一期集训恢复性训练【数据结构-并查集】(补)
    新高一暑假第一期集训恢复性训练【数据结构-并查集】(补)C.[POJ1417]TrueLiars先将题目中的好人和坏人转换一下,也即是如果\(x\)说\(y\)是好人,则他们两属于同一组,反之则不属于同一组。然后我们可以想到带权的并查集,用\(val_x\)代表\(x\)与其父节点的关系,当\(val_x\)......
  • 十月十四日《程序员修炼之道:从小工到专家》阅读笔记1
    软件开发的复杂性:阅读这部分内容后,我意识到软件开发的复杂性远远超出了编码本身。它涉及到项目管理、团队协作、需求理解等多个方面。这让我认识到,作为一个程序员,需要具备更全面的技能和视野。持续学习的重要性:书中强调了持续学习和适应新技术的重要性。在技术日新月异的今天,只有......