A->B,B->C,C->A。A吃B,B吃C,C吃A,这是循环的。 r[] 数组保存的是 该节点和祖先节点的关系: 0-和祖宗节点同类; 1-吃祖宗节点; 2-被祖宗节点吃。 输入: scanf("%d%d%d",&c,&a,&b); if(c==1) a和b节点同类; if(c==2) a吃b。 注意:c-1就和最上面数字的数字表示相同的意思。 输...
poj 1182(带权并查集) 题意:动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是"1 X Y",表示X和Y...
x1->x ->y ->y1 计算 /*n个动物 k句话 有一种循环a吃b 吃c c吃a 开始不知道n种动物关系是什么 两种询问:d=1 x y为同类 d=2 x吃y 判断假话条数(关键之违背之前的关系) 并查集可以很好解决的满足区间传递关系的区间合并问题,注意一般是多棵树*/#include<cstdio>#include<cstring>#include<algorithm...
转: 用0 1 2 分别表示A B C的关系。 0吃1,1吃2,2吃0. 注意这个编号都是以根结点为参照的,不是绝对的。 开一个val数组,一开始这个数组为0,所有的点都是独立的,不是相连的,没有关系。 慢慢加入点之后,把有关系的合并在一起,并且编号的相对大小确定一个集合中的关系。 #include <iostream> #include ...
每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是”1 X Y”,表示X和Y是同类。 第二种说法是”2 X Y”,表示X吃Y。 此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当...
每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是”1 X Y”,表示X和Y是同类。 第二种说法是”2 X Y”,表示X吃Y。 此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。
每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是"1 X Y",表示X和Y是同类。 第二种说法是"2 X Y",表示X吃Y。 此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句...
现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是"1 X Y",表示X和Y是同类。 第二种说法是"2 X Y",表示X吃Y。 此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真...
现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是"1 X Y",表示X和Y是同类。 第二种说法是"2 X Y",表示X吃Y。 此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真...
则可分别维护i在A,B,C组的情况。 i,j 同类:i-A=j-A,i-B=j-B,I-C=j-C i吃j :i-A=j-B,i-B=j-C,I-C=j-A 判断:若i-A和j-B同类,则必有i吃j,否则无法确定(或由于其它连线不可能实现)。以此类推。 #include<cstdio> #include<cstring> ...