NYOJ 207 POJ 1182 带权并查集做法(√)

题目链接 NYOJ 207 , POJ 1182 食物链

这道题在NYOJ上难度为5,我刚开始用普通并查集做的,WA。后来看了网上不少的解题报告,大家都在使用一种叫做带权并查集的做法。这种做法用到了离散数学里面最近学到的一些偏序关系等等,看的有点晕。但是大体上还是能够接受的。

带权并查集在普通并查集的基础上增加了一个当前节点与父节点(根节点)的关系。通过使用0,1,2来表示两者之间的关系。

参照着带权并查集的做法AC了,但是这两天我一直在考虑一组特别的数据。

6 8
2 1 2
2 2 3
2 4 5
2 5 6
2 4 2
2 5 3
2 1 6
1 3 6

画出关系图是这样的

NYOJ 207 POJ 1182 带权并查集做法(√)_第1张图片

显然,这个图片中的6个动物没有任何不合理,但是现在所有网上的AC代码都不能正确识别这组数据(输出的都是1)。

这是个人比较困惑的地方。

【补充】20160508

问了教练之后发现这组数据本身就有问题,如果5吃3,5吃6说明3和6是同类,1吃6且1吃2而2和6是同类,则2和3是同类(矛盾!2吃3)

所以说还是我对题目的理解有问题....


AC传送门 View Source On GitHub

我在GitHub上建立了一个仓库,用于存放已经AC的题目的源代码。如果各位有未收录的题目或者有更好的解法,欢迎fork仓库+PR~ 让我们共同创建一个AC代码集中仓库,造福ACM Beginner ~

仓库地址: OJ-Problems-Source On GitHub


你可能感兴趣的:(NYOJ 207 POJ 1182 带权并查集做法(√))