
并查集
文章平均质量分 69
bookybooky
http://blog.163.com/happyliyifan126/
展开
-
POJ 2524: Ubiquitous Religions - 并查集 |裸
最最简单和基础的并查集应用,红果果的并查集......题意:给出n个学生,m个条件(或者说m对学生),每对学生编号分别为a,b,他们是属于一个宗教信仰的,要求输出不同宗教信仰最多有多少个。分析详见注释。#include #include #include using namespace std;const int N=50005;int p[N],rank[N];int Make_Set(int原创 2015-01-10 21:41:53 · 395 阅读 · 0 评论 -
[转]排列组合计算
原BLOG:http://www.programfan.com/blog/article.asp?id=26295当组合结果限制在在给定的int类型内是,如果简单地按照阶乘方式来计算组合的话,有可能产生溢出。下面为两种不会溢出的计算组合方法1. 模拟人工计算,先将分子、分母约分,然后再计算结果,因结果肯定是整数,所以分母一定可以完全被约掉。//利用辗转相除法求两个自然数的最大公因数, a > bi原创 2015-01-10 21:41:49 · 533 阅读 · 0 评论 -
POJ 1611 / ZOJ 1789: The Suspects - 并查集
学姐给我这个菜鸟讲的题让我第一次接触到并查集的使用。本题是并查集的基础应用题。题目大意:SARS(非典型肺炎)传播得非常厉害,其中最有效的办法是隔离那些患病、和患病者接触的人。现在有几个学习小组,每小组有几个学生,一个学生可能会参加多个小组。小组中只要有一个人得病,其余的都是嫌疑人。现在已知这些小组的人员,且0号学生已经患病,求一共有多少个嫌疑人。分析:每个小组的人员属于同一个集合。在根节点记录每原创 2015-01-10 21:41:45 · 659 阅读 · 0 评论 -
POJ 1182:食物链[详细!]
[好有成就感每个字都自己敲的啊~~被自己感动啦~~]先谈谈小菜鸟的体会~~:这道并查集经典权威的题耗了几个小时一字一句看那些最详细的解题报告终于搞明白了。终于体会到BOBO学长在论坛帖子里说的,刷水题和刷有内涵的题成就感是不同的~嗯...知道这题就可以把对抗赛1的D题解决了。唔,听闻other's blog的指导,做这题前把1664和2524两道最基础和最简单的并查集先做了,这可以让自己对并查集的原创 2015-01-10 21:41:56 · 554 阅读 · 0 评论 -
POJ 1962/ ZOJ 2178: Corporative Network - 并查集
简单并查集 n个结点,初始时啥都不存在,I u v 操作:把结点u的父节点设为v,距离为|u-v|模除1000;E u 操作:询问u到根节点的距离。注意:这里的合并操作指定了父节点和子节点,故不能使用启发式合并#include #include #include using namespace std;const int N=20005;int p[N],d[N];int findset(in原创 2015-01-10 21:42:56 · 457 阅读 · 0 评论 -
POJ 1988 : Cube Stacking - 简单并查集
题意:有N(N堆方块,开始每堆都是一个方块。方块编号1–N.有以下两种操作:M x y :表示把方块x所在的堆,拿起来叠放到y所在的堆上。C x : 问方块x下面有多少个方块。操作最多有P (P次。对每次C操作,输出结果。输入:M x y :表示把方块x所在的堆,拿起来叠放到y所在的堆上。C x : 问方块x下面有多少个方块。输出:C的结果。思路:除了par数组,还要开设辅助数组:sum[]:原创 2015-01-10 21:47:07 · 639 阅读 · 0 评论