食物链(扩展域

# 题意

有三类动物A,B,C,这三类动物的食物链构成环形。

A吃B, B吃C,C吃A。

现有N个动物,以1-N编号。

每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。

有人用两种说法对这N个动物所构成的食物链关系进行描述:

第一种说法是”1 X Y”,表示X和Y是同类。

第二种说法是”2 X Y”,表示X吃Y。

当一句话满足下列三条之一时,这句话就是假话,否则就是真话。

1) 当前的话与前面的某些真的话冲突,就是假话;
2) 当前的话中X或Y比N大,就是假话;
3) 当前的话表示X吃X,就是假话。

根据给定的N和K句话,输出假话的总数。

# 题解

将每个动物拆成3个点,同类Xself,捕食Xeat和天敌Xenemy

x和y是同类即x和y的捕食一样,天敌一样,同类一样

合并xself和yself,xeat和yeat,xenemy和yenemy

若x吃y则,x的天敌是y的捕食,x捕食y的同类,x同类是y天敌

合并xeat和yself,合并xenemy和yeat,合并xself和yenemy

判断矛盾:

若x和y是同类

1)xeat和yself是同一个集合说明x吃y矛盾

2)xself和yeat在同一个集合说明y吃x矛盾

x吃y:

1)若xself和yself在同一个集合证明x和y是同类矛盾

2)若xself和yeat在一个集合说明y吃x矛盾

 

 

猜你喜欢

转载自www.cnblogs.com/hhyx/p/12451543.html
今日推荐