随笔分类 -  并查集

240. 食物链(并查集+数论)
摘要:动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。 A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。 每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是”1 X Y”,表示X和Y是同类。 第 阅读全文
posted @ 2020-01-27 15:33 qdu_lkc 阅读(388) 评论(0) 推荐(0)
837. 连通块中点的数量(并查集)
摘要:给定一个包含n个点(编号为1~n)的无向图,初始时图中没有边。 现在要进行m个操作,操作共有三种: “C a b”,在点a和点b之间连一条边,a和b可能相等; “Q1 a b”,询问点a和点b是否在同一个连通块中,a和b可能相等; “Q2 a”,询问点a所在连通块中点的数量; 输入格式 第一行输入整 阅读全文
posted @ 2020-01-26 18:48 qdu_lkc 阅读(286) 评论(0) 推荐(0)
836. 合并集合(并查集)
摘要:一共有n个数,编号是1~n,最开始每个数各自在一个集合中。 现在要进行m个操作,操作共有两种: “M a b”,将编号为a和b的两个数所在的集合合并,如果两个数已经在同一个集合中,则忽略这个操作; “Q a b”,询问编号为a和b的两个数是否在同一个集合中; 输入格式 第一行输入整数n和m。 接下来 阅读全文
posted @ 2020-01-26 17:01 qdu_lkc 阅读(248) 评论(0) 推荐(0)
并查集模板
摘要:并查集 1.合并两个集合 2.查询两个数是否在一个集合 基本原理: 每个集合用一棵树来表示,树根的编号就是整个集合的编号,每个结点存储他的父节点,p[x]表示x的父节点 1.是否是一个集合 if( find(a)==find(b) ) 2.合并两个集合 p[find(a)]=find(b) stat 阅读全文
posted @ 2020-01-26 16:59 qdu_lkc 阅读(154) 评论(0) 推荐(0)