# 题意
有三类动物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句话,输出假话的总数。
扫描二维码关注公众号,回复:
9702730 查看本文章
# 题解
将每个动物拆成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矛盾