ACM/ICPC 之 并查集-食物链(POJ1182)】的更多相关文章

并查集的经典题型,POJ上题目还是中文= =,一般看到中文题都会感觉不太简单,这道题的数学归纳用得比较多,可以简化代码,挺有意思的. 同类型的题目还有POJ1703,比这个要简单,想了解并查集基本介绍或想参考Code请移步:算法手记 之 数据结构(并查集详解)(POJ1703) 存在食物链: A吃B,B吃C,C吃A 给出两种判断:1 a b 指a和b相同 2 a b 指a吃b 现依照题目输入,输出判断的错误次数:1.a,b超过N错误 2.a,b不符合前面判断则错误 Code仅供参考: //食物链…
带权并查集,或者叫做种类并查集,经典题. http://blog.csdn.net/shuangde800/article/details/7974668 这份代码感觉是坠吼的. 我的代码是暴力分类讨论的,没有用取模的写法,取模的写法更简洁,证明要用到同余的知识,通用性不高,具体可以看上面那份代码. 就并查集每个结点记录与其父节点的关系,并且在路径压缩,以及集合合并的时候进行讨论. 代码风格在程设老师的教育下进行了改变,的确感觉比高中那种代码风格要好点. #include<cstdio> us…
链接:http://poj.org/problem?id=1182 定义一种关系R(x,y),x > y 时 R(x,y) = 2:x = y 时 R(x,y)= 1:x < y 时 R(x,y) = 0 则R(x,y)有如下运算法则: R(x,y) = (R(x,u) - R(y,u) + 4) % 3 R(x,y) = (R(x,u) + R(u,y) + 2) % 3 ... 用并查集维持这种关系 /********************************************…
时间限制(普通/Java):5000MS/15000MS     内存限制:65536KByte 描述 NKU ACM最近要举行足球赛,作为此次赛事的负责人,Lee要对报名人员进行分队.分队要遵循如下原则: 一个人不能加入多支队伍:不认识的人不能分在同一队:如果a和b认识,b和c认识,那么认为a和c也认识:每支队伍上限8人,下限5人:尽量使队伍满员.由于参赛人数很多,Lee表示无能为力,所以请你帮助Lee编程解决比赛有多少队伍. 输入 第一行输入两个整数,n和m,n(1<=n<=300000)…
畅通工程 Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可).问最少还需要建设多少条道路? Input 测试输入包含若干测试用例.每个测试用例的第1行给出两个正整数,分别是城镇数目N ( &l…
题目传送门:http://poj.org/problem?id=1182 这是一道关系型并查集的题,对于每个动物来说,只有三种情况:同类,吃与被吃: 所以可以用0,1,2三个数字代表三种情况,在使用并查集的时候再多加一个关系数组,初始时全部赋值为0 然后就是在进行并查集的每一步时加入关系的改变, 如果祖先节点相同,说明两者之间的关系已经出现,是已知的,判断两者关系之和与给的d-1是否相同 祖先节点不同,说明在此之前两者的关系还未知,就赋予关系 噢 对了 poj 上的这题要单组输入,多组会wa c…
并查集 并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题.一些常见的用途有:求连通子图.求最小生成树的Kruskal算法和求最近公共祖先(LCA)等. 并查集的基本操作 1.初始化init 2.查询find 3.合并unionn //用数组fa[]来存储每个元素的父节点 int fa[MAXN]; //一开始,我们先将它们的父节点设为自己 void init(int n) { for(int i=1;i<=n;i++) fa[i]=i…
分析:所谓带权并查集,就是比朴素的并查集多了一个数组,记录一些东西,例如到根的距离,或者和根的关系等 这个题,权数组为relation 代表的关系  1 和父节点不同性别,0,和父节点同性别 并查集一个很大的方便在于它可以进行路径压缩,可以将树高维持在2(当然有一些其它应用是不需要路径压缩的) 这就需要在路径压缩的时候,随之得到一个节点和树根的关系,这样我们可以通过路径中的父子关系,递归得到根节点和当前结点的关系 已知每个点和根节点的关系,那么任意两个点关系也很容易得到(这就是路径压缩的意义)…
食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 65430   Accepted: 19283 Description 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种. 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是"1 X Y",表示X和Y是同…
并查集专题训练地址,注册登录了才能看到题目 并查集是一个树形的数据结构,  可以用来处理集合的问题, 也可以用来维护动态连通性,或者元素之间关系的传递(关系必须具有传递性才能有并查集来维护,因为并查集有压缩路径). 用并查集来维护元素之间关系的传递, 那么元素与元素之间就有一个权值(带权并查集),那么当路径压缩时,我们需要根据关系的传递性来维护 当父元素变动时,关系的变动. poj1182食物链 给定一些元素之间的关系, 问我们有多少是错误的. 当碰到一个错误时,并不会用它来更新并查集(错误的怎…